文章目錄
- 1.直接選擇排序
1.直接選擇排序
- 🐧 begin 有可能就是 maxi ,所以交換的時候,要及時更新 maxi
- 🍎 直接選擇排序是不穩定的,例如:
9 [9] 5 [5]
,排序后,因為直接選擇排序是會交換數據的,排序后可能變成了[5] 5 [9] 9
// 直接選擇排序
// 時間復雜度: O(n^2)
void SelectSort(int* a, int n)
{int begin = 0, end = n - 1;while (begin < end){int mini = begin, maxi = begin;for (int i = begin; i <= end; i++){if (a[i] < a[mini])mini = i;if (a[i] > a[maxi])maxi = i;}Swap(&a[begin], &a[mini]);// 此時的 maxi 有可能已經改變if (begin == maxi)maxi = mini;Swap(&a[end], &a[maxi]);begin++, end--;}
}