步骤:
- 是冒泡排序的优化,因为函数调用是压栈的,繁杂操作浪费内存
- 选择排序每轮只交换一次元素,从尾至头找到最小的然后与第一个交换
代码:
void SelectionSort(vector<int>& num){
int size = num.size();
for (int i = 0; i<size; i++){
int min = i;
for (int j = i + 1; j < size; j++){
if (num[j] < num[min])
min = j;
}
if (min != i)
swap(num[i], num[min]);
}
}
分析:
- 优于冒泡排序,减少了很多操作
- 时间复杂度为O(n^2)