1. 程式人生 > >排序之簡單選擇排序(Simple Selection Sort)

排序之簡單選擇排序(Simple Selection Sort)

簡單選擇排序(Simple Selection Sort)基本思想:

    首先在待排序序列中選擇最小的元素與序列的第一個位置元素交換,然後在剩餘序列中再找出最小的元素與第二個     位置元素交換。以此類推,直至第n-1個元素與第n個元素比較交換為止;(也可以理解為依次從無序區中選擇最小的     元素插入到有序區的末尾位置)

演算法操作:

設陣列data[0......n-1]:

         1)無序序列data[0.....n- 1] , i = 0;

         2)從無序序列data[i.....n-1]中選取最小的元素min, 將其與data[i] 交換,形成有序序列data[0.....i];

         3)i++,重複第二步操作,直至i==n-1;

舉例:


程式碼實現:

//-------------------------------------------------------簡單選擇排序 --------------------------------------------------------------------------
void SimpleSelectionSort(int* data , int dLength)
{
	if(data == NULL || dLength <= 0)
		return;

	for(int i = 0; i < dLength; i++)
	{
		int key = i;
		for(int j = i + 1; j < dLength; j++)
		{
			if(data[key] > data[j])
				key = j;            //最小元素的位置
		}
		if(key != i)
			swap(data[i] , data[key]);
	}
}


相關推薦

排序簡單選擇排序(Simple Selection Sort)

簡單選擇排序(Simple Selection Sort)基本思想:     首先在待排序序列中選擇最小的元素與序列的第一個位置元素交換,然後在剩餘序列中再找出最小的元素與第二個     位置元素交換。以此類推,直至第n-1個元素與第n個元素比較交換為止;(也可以理解為依次

排序演算法--選擇排序簡單選擇排序

在待排序記錄中,選擇一個最小的數,和第一個記錄交換位置,在剩下n-1個的記錄中選擇最小的和第二個記錄交換,依次類推,最終可以得到一個有序的序列。 程式碼: #include <string.h> #include <malloc.h> #includ

常見排序簡單選擇排序

#include <stdio.h> void Simple_Select_Sort(int *Array,int length){ int i,j,min,temp; for(i = 0; i < length; i++) { min = i; for(j = i+1; j &l

資料結構:八大排序簡單選擇排序選擇排序

1、演算法思想:在待排記錄中依次選擇關鍵字最小的記錄新增到有序序列中,逐漸縮小範圍直至全部記錄選擇完畢。每一趟從待排的無序區中選出關鍵字最小的記錄,順序放在已排好序的子序列的最後,直至記錄全部排完。 2、複雜度:直接選擇排序的時間複雜度為O(n2)。空間複雜度 O(1) 穩

算法一簡單選擇排序

!= 復雜度 cnblogs 數據 lec 空間 class 相同 i++ 一、 選擇排序的思想 選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基於此思想的算法主要有簡單選擇排序、樹型選擇

排序算法簡單選擇排序

clip order ng- left 運行 [] cal var ret 基本思想 在一組元素中選擇具有最小排序碼的元素,若它不是這組元素中的第一個元素,則將它與這組元素中的第一個元素對調;在未排序的剩下的元素中反復運行以上步驟,直到剩余元素僅僅有一

簡單排序演算法簡單選擇排序和直接插入排序

簡單選擇排序簡述: 簡單選擇排序(Simple Selection Sort)可以說是氣泡排序的一種改版,它不再兩兩比較出較小數就進行交換,而是每次遍歷比較當前數的後面所有數,最後再把最小的數和當前數

排序——直接選擇排序簡單選擇排序

無序 代碼 .... 插入排序 相對 方法 import 排序 color 直接選擇排序也稱簡單選擇排序,是一種相對簡單的排序算法,它的基本思想是:從一列數中找出最小的,和第一個交換;剩下的重新找出最小的,和這列數的第二個交換,......一直進行n-1次比較之後,該數列已

Java排序直接選擇排序

循環 oid 之間 min static cts ava void ont public class SelectSort { public static void selectSort(int [] a){ int min; int te

陣列排序直接選擇排序

一、基本思想 直接選擇排序屬於選擇排序的一種,其排序速度要比氣泡排序快,其基本思想就是將指定排序位置與其他陣列元素分別進行對比,如果滿足條件就交換元素值,注意區別冒牌排序,這裡不是交換相鄰元素,而是把

排序整理——簡單選擇排序

       簡單選擇排序是指一種排序演算法,在簡單選擇排序過程中,所需移動記錄的次數比較少。最好情況下,即待排序記錄初始狀態就已經是正序排列了,則不需要移動記錄。方法是設所排序序列的記錄個數為n。i取1,2,…,n-1,從所有n-i+1個記錄(Ri,Ri+1

排序 (2) -----簡單選擇排序和氣泡排序

簡單選擇排序和氣泡排序 兩種方法都是每一趟找出最大(小)的他放在一個位置,下一趟不用去管這個位置,只是兩種方法採用的找的形式不一樣 1. 簡單選擇排序:固定位置與前(後)面的比較 例子:5 1 6 2 假如按從小到大排序 5:粗體標記表示 固定的位置 5:這種標記表示已經排好

排序演算法(一)氣泡排序簡單選擇排序,直接插入排序,希爾排序

氣泡排序,簡單選擇排序,直接插入排序是三種複雜度為O(n2)的演算法,希爾排序在特殊增量序列的時候可以獲得複雜度為O(n3/2) 氣泡排序 1、最簡單的排序實現 這裡把每個數和這個數之後的每個數比較,大於就交換位置。 缺點:多出了很多次沒有用的交

選擇排序樹形選擇排序(TreeSelectionSort)

一、簡單選擇排序思想 很顯然,每次我們比較後就把資料進行交換,取出了關鍵字最小的記錄,但是對於與最小關鍵字記錄交換的資料我們直接扔進了亂序中,沒有利用這次比較。導致每次選擇都要重新比較。 二、樹形選擇排序 為了減少簡單選擇排序,我們利用前n-1

資料結構和算法系列6 七大排序直接選擇排序和堆排序

上一篇我們總結了交換排序的氣泡排序和快速排序。那麼這一篇我們要總結的是選擇排序,選擇排序分為直接選擇排序和堆排序,我們主要分以下幾點進行總結。 1,直接選擇排序及演算法實現 2,堆排序及演算法實現 1,直接選擇排序及演算法實現 直接選擇排序(Straight Select Sort)是一種簡單的排序方法,它

七大內部排序演算法總結(插入排序、希爾排序、氣泡排序簡單選擇排序、快速排序、歸併排序、堆排序

寫在前面:         排序是計算機程式設計中的一種重要操作,它的功能是將一個數據元素的任意序列,重新排列成一個按關鍵字有序的序列。因此排序掌握各種排序演算法非常重要。對下面介紹的各個排序,我們假定所有排序的關鍵字都是整數、對傳入函式的引數預設是已經檢查好了的。只

C語言實現氣泡排序簡單選擇排序

氣泡排序(Bubble Sort)的基本思想為兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序記錄為止。 其時間複雜度為O(n^2)。 簡單選擇排序(Simple Selection Sort)

八大排序演算法 —— 簡單選擇排序

簡單插入排序 核心思想:簡單選擇排序就是從待排的元素中選擇最小的元素,凡在已排元素的後面,依次迴圈n次,實現排序。 演算法實現過程: 初始關鍵字:『 8,5,2,6,9,3,1,4,0,7 』 第一趟排序後:0,『5,2,6,9,3,1,4,8,7』

排序演算法——簡單選擇排序

選擇排序基本思想 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n

資料結構例程——選擇排序直接選擇排序

#include <stdio.h> #define MaxSize 20 typedef int KeyType; //定義關鍵字型別 typedef char InfoTy