(5)排序之簡單選擇排序

2022-08-23 14:42:10 字數 1655 閱讀 9516

**:

簡單選擇排序是一種選擇排序

選擇排序:每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結束為止。

(1)從待排序序列中,找到關鍵字最小的元素;

(2)如果最小元素不是待排序序列的第乙個元素,將其和第乙個元素互換;

(3)從餘下的 n - 1 個元素中,找出關鍵字最小的元素,重複(1)、(2)步,直到排序結束。

如圖所示,每趟排序中,將當前i小的元素放在位置i上。 

核心**

void selectionsort(int *a,int

n)

//將第i個數放在第i個位置上

int temp=a[index];

a[index]=a[i];

a[i]=temp;}}

排序類別

排序方法

時間複雜度

空間複雜度

穩定性複雜性

平均情況

最壞情況

最好情況

選擇排序

簡單選擇排序

o(n2)

o(n2)

o(n2)

o(1)

不穩定簡單

簡單選擇排序的比較次數與序列的初始排序無關。 假設待排序的序列有 n 個元素,則比較次數總是n (n - 1) / 2

而移動次數與序列的初始排序有關。當序列正序時,移動次數最少,為 0.

當序列反序時,移動次數最多,為3n (n - 1) /  2。

所以,綜合以上,簡單排序的時間複雜度為o(n2)。 

簡單選擇排序需要占用1個臨時空間,在交換數值時使用。

執行結果

排序前:   3  5  2  8  1  2  0  8  4  1 

第 1 趟:  0  5  2  8  1  2  3  8  4  1 

第 2 趟:  0  1  2  8  5  2  3  8  4  1 

第 3 趟:  0  1  1  8  5  2  3  8  4  2 

第 4 趟:  0  1  1  2  5  8  3  8  4  2 

第 5 趟:  0  1  1  2  2  8  3  8  4  5 

第 6 趟:  0  1  1  2  2  3  8  8  4  5 

第 7 趟:  0  1  1  2  2  3  4  8  8  5 

第 8 趟:  0  1  1  2  2  3  4  5  8  8 

第 9 趟:  0  1  1  2  2  3  4  5  8  8 

排序後:   0  1  1  2  2  3  4  5  8  8 

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

基本思想 在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換 然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。選擇排序的思想其實和氣泡排序有點類似,都是在一次排序後把最小的元素放到最前面。但是過程不同,氣泡排序是通過相鄰的比較和交換。而選擇排序是通...

排序 5 簡單選擇排序

今天我們來說一下簡單選擇排序,這也是相對簡單的一種排序,它也是一種不穩定的排序 時間複雜度 最好情況 o n2 最壞情況 o n2 平均情況 o n2 空間複雜度 o 1 簡單選擇排序的思想 對於一組記錄,先找出最小的記錄,將它與第乙個記錄進行交換,之後從第二個 記錄開始,找出最小的記錄,與它進行交...

選擇排序之簡單選擇排序

選擇排序是幾大排序演算法中的一種,選擇排序的思想如下 每趟從待排序的記錄序列中選擇關鍵字最小的記錄放置到已排序表的最前位置,直到全部排完。選擇排序大概有兩種,今天我們說其中一種 簡單選擇排序。1 基本思想 在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換 然後在剩下的數當中再找最小的與第二個...