选择排序思想是每次从数组中选出最大后最小的数,放到正确的位置,然后在剩余的数中再次选择最大或者最小的数放到正确位置,一直重复知道完成排序。
参考代码:
#include <iostream>
using namespace std;
SelectSort(int *arrays,int n);
void main()
{
int arrays[]={9,8,7,6,5,4,3,2,1};
int i;
SelectSort(arrays,9);
for (i=0;i<9;i++)
{
cout << arrays[i]<< " ";
}
cout << endl;
}
SelectSort(int *arrays,int n)
{
int i,j;
int tmp;
int a;
for (i=0;i<n-1;i++)
{
tmp=i;
for (j=i+1;j<n;j++)
{
if (arrays[tmp] > arrays[j])
{
tmp=j;
}
}
if (i != tmp)
{
a=arrays[i];
arrays[i]=arrays[tmp];
arrays[tmp]=a;
}
}
}
选择排序最好和最坏的情况下时间复杂度都为 O(n2)