选择排序
选择排序是一种简洁直观的排序算法,时间复杂度为O(2),所以用到它的时候,数据规模越小越好。唯一的好处是不占用额外的内存空间
选择排序交换次数是O(n) 最好情况是0次,最坏情况是n-1次(逆序)
算法步骤
第一次从待排序的数据元素中选出最小的一个元素,存放到序列的起始位置,然后再从剩余的未排序的元素中寻找最小的元素,然后放到已排序的末尾。以此类推,直到所有元素都排完
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void selection_sort(vector<int> &arr)
{
for(int i = 0; i < arr.size()-1; i++)
{
int min=i;
for(int j=i+1;j<arr.size();j++)
{
if(arr[j]<arr[min])
min=j;
}
swap(arr[i],arr[min]);
}
}
int main()
{
vector<int> arr={1,5,7,2,6,3,9};
selection_sort(arr);
for(int i=0;i<arr.size();i++)
{
cout << arr[i];
}
return 0;
}