C 排序演算法之簡單選擇排序

2021-08-03 20:00:13 字數 1180 閱讀 1653

簡單選擇排序演算法

(1)演算法介紹

簡單選擇排序採用最簡單的選擇方式,從頭到尾順序掃瞄序列,找出最小的乙個記錄,和第乙個記錄交換,接著從剩下的記錄中繼續這種選擇和交換,最終使序列有序。

(2)執行過程

下面舉例說明簡單選擇排序的執行過程:

原始序列:3  5  2  9  7  8  4  1  6  10

在選擇排序的過程中,把整個序列分為有序部分(綠色)和無序部分(紅色)。開始時,整個序列為無序序列,如下所示:

進行第一趟排序,從無序序列中選取乙個最小的元素1,使其與無序序列中的第乙個元素交換,則此時產生了僅含有乙個元素的有序序列,而無序序列中的元素減少1,如下所示:

進行第二趟排序,從無序序列中選取乙個最小的元素2,使其與無序序列中的第乙個元素交換,則此時產生了僅含有兩個元素的有序序列,而無序序列中的元素減少1,如下所示:

重複上述步驟,知道無序序列中的元素變為0個為止。

**實現如下:

#include #include using namespace std;

//簡單選擇排序演算法,時間複雜度為o(n*n),空間複雜度為o(1)

void selectsort(vector&r)

//將最小元素與無序序列第乙個元素交換

temp = r[k];

r[k] = r[i];

r[i] = temp; }}

void main()

; selectsort(r);

for (auto x:r)

cout << x << " ";

cout << endl;

}

執行結果如下:

複雜度分析

(1)時間複雜度

最好情況,序列有序,時間複雜度為o(n);

最壞情況,序列逆序,時間複雜度為o(n^2);

平均時間複雜度為o(n^2)

(2)空間複雜度

需要額外的輔助變數temp,因此空間複雜度為o(1).

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

簡單選擇排序演算法,它的概念就是在要排序的一組數中,選出最小 或者最大 的一 個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後 乙個數 比較為止。這個演算法是很容易理解的,那麼,直接上 最下面的乙個...

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

學習 輕鬆學演算法 簡單選擇排序 簡單選擇排序的思想很簡單,假設我們要從小到大排序,那麼我們可以這樣 從未排序的數列中找到最小的數,放在第乙個位置,讓原來在第乙個位置上的數放到最小數的位置,那麼第乙個位置上就是最小數,他是有序的。接著在剩下的未排序的數列中,再找到最小數,放在第二個位置,讓原來第二個...

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

演算法思路 這個真的是超級簡單的演算法,從陣列起點開始,每次迴圈都確定陣列的乙個空間存什麼,裡面的巢狀迴圈 每次都要遍歷未排序的部分來找到最小的數字,退出這個小迴圈後,將這個最小值放到當前操作的陣列下標中。package choice 簡單排序演算法 思路 從每個點開始算起,將每個點與後面的點比較選...