直接选择排序的思想:在每一趟排序中,在待排序子表中选出关键字最大或最小的元素放在其最终位置上。
代码如下:
#include<iostream>
using namespace std;
void select_sort(int a[],int n)
{
int i,j,min,tem;
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[min])
min=j;
}
if(min!=i)
{
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
}
}
int main()
{
int i,n,a[100];
while(cin>>n,n)
{
for(i=0;i<n;i++)
cin>>a[i];
select_sort(a,n);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl<<endl;
}
return 0;
}
Attention:
①直接选择排序是不稳定排序。如排序(3,3,2)。
②时间复杂度为O(n^2),只需少量的辅助空间,属于原地排序。