选择排序,核心思想:
1 每次选择一个最小的数排在前面,n个数,只需选择n-1次,剩余的数自然有序。
实现:
#include <iostream>
#include <algorithm>
using namespace std;
void SelectSort(int a[],int length)
{
if(a != NULL && length)
{
for(int i =0;i < length -1;i++)
{
for(int j = i+1;j < length;j++)
{
if(a[i] > a[j])
{
int nTmp = a[j];
a[j] = a[i];
a[i] = nTmp;
}
}
}
}
}
int main()
{
int a[] ={0,1,2,65,54,20,30,40,20};
int lengthA = sizeof(a) / sizeof(a[0]);
SelectSort(a,lengthA);
std::for_each(a,a+lengthA,[](int i){
std::cout << i << std::endl;});
return 0;
}
注意:选择排序对于自然有序的队列,也需要每次都执行,无法判断是否自然有序。