简单选择排序,每次在n-i+1个记录中选取最小的记录,作为有序序列中的第i个记录,选择排序的时间复杂度是O(n2),空间复杂度是O(1),是一种稳定的排序算法。
代码如下:
#include<iostream>
using namespace std;
int selectMin(int *a,int i,int len)
{
int minIndex=i;
int min=a[i];
for(int j=i;j<len;++j)
{
if(min>a[j])
{
min=a[j];
minIndex=j;
}
}
return minIndex;
}
void selectSort(int *a,int len)
{
for(int i=0;i<len;i++)
{
int j=selectMin(a,i,len);
if(i!=j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
int main()
{
int a[]={49,38,65,97,76,13,27,49};
int len =sizeof(a)/sizeof(*a);
selectSort(a,len);
cout<<"排序后"<<endl;
for(int i=0;i<len;++i)
cout<<a[i]<<" ";
cout<<endl;
}
这几次的代码实现然我明白,把一些语句写成函数的形式有助于代码的易读性,并且提高代码的重用性。