选择排序是不稳定排序,时间复杂度为o(n^2),且时间复杂度与序列的初始状态无关,只需要一个额外的辅助空间,空间复杂度为o(1)。冒泡排序与选择排序都是经过每一趟排序选择出最大值或最小值,但冒泡排序是基于交换、移动的比较,而选择排每一趟排序只需移动一次数据,故只需记录相互比较数据的下标即可。
#include<iostream>
#include<stdlib.h>
using namespace std;
void xuanze(int num[],int len)
{ int key;//用于记录最值的下标
int j,temp;
for(int i=4;i>=0;i--)
{
key=0;
for( j=1;j<=i;j++)
{
if(num[j]>num[key])
key=j;
}
temp=num[key];
num[key]=num[j-1];
num[j-1]=temp;
}
}
int main()
{
int num[5];
int len=5;
for(int i=0;i<5;i++)
cin>>num[i];
xuanze(num,len);
for(int i=0;i<5;i++)
cout<<num[i];
system("pause");
return 0;
}