选择排序:每次选择最小的元素。
遍历第一遍:第一位开始,从左到右找到最小的元素,和第一位交换
遍历第二遍:第二位开始,从左到右找到最小的元素,和第二位交换
遍历第三遍:第三位开始,从左到右找到最小的元素,和第三位交换
遍历第四遍:第四位开始,从左到右找到最小的元素,和第四位交换
。。。。
就这么简单!
#include <iostream>
#include <vector>
using namespace std;
void selectionSort(vector<int>& arr){
for(int i = 0; i < arr.size(); ++i){
int minIndex = i;
for(int j = i + 1; j < arr.size(); ++j){
if(arr[j] < arr[minIndex])
minIndex = j;
}
swap(arr[i], arr[minIndex]);
}
}
int main(){
vector<int> a{4,3,2,1};
selectionSort(a);
for(auto c : a)
cout << c << endl;
return 0;
}
堆排序待补充