一趟简单选择排序的操作为:通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小(大)记录,并和第i个记录交换之;所需进行记录移动的次数最小值为0,最大值为3(n-1),关键字之间的比较次数是n(n-1)/2,所以时间复杂度为O(n*n);
如下的例子所示:
#include<iostream>
using namespace std;
#define size 10
void selectsort(int n,int arr[])
{
int k=0,temp=0;
for(int i=0;i<n;i++)
{ k=i;
for(int j=i+1;j<n;j++)
if(arr[j]<arr[k])
k=j;
if(i!=k)
{
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
}
void output(int n,int arr[])
{
for(int i=0;i<n;i++)
cout<<arr[i]<<"\t";
cout<<endl;
}
void main()
{
int arr[size]={45,23,9,35,22,90,100,456,67,1};
selectsort(size,arr);
output(size,arr);
}