1、算法思想
首先,找到數組中最小的那個元素,將它和數組的第一個元素交換位置(如果第一個元素就是最小元素那麼它就和自己交換)。然後,仍然在剩下的元素中找到最小的元素,將它與數組的第二個元素交換位置。如此往復,直到將整個數組排序。這種方法我們稱之爲選擇排序。
爲方便理解我還準備了動圖:
2、代碼實現
void selectSort(int* a, int length) {
int n = length;
for (int i = 0; i < n - 1; i++) {
int min = i;
for (int j = i + 1; j < n; j++) {
if(a[min] > a[j]) min = j;
}
//交換
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
3、算法分析
- 時間複雜度:O(n2)
- 空間複雜度:O(1)
- 穩定性:非穩定性排序
- 原地排序