基本原理:对于给定的数组,经过第一轮比较后得到最小数,然后将该最小数与第一个数的位置进行交换,接着对剩下的数进行类似的查找,交换操作,直到只剩下一个数为止。此算法的复杂度为:O(n^2)。(参考程序员面试笔试宝典--何昊)
程序如下:
#include<iostream>
using namespace std;
//选择排序(简单排序)
void Simple_Sort(int *a,int n)
{
int temp=0;
int flag=0;
for(int i=0;i<n-1;i++)
{
temp=a[i];
flag=i;
for(int j=i+1;j<n;j++)
{
if(a[j]<temp)
{
temp=a[j];
flag=j;
}
}
if(temp!=a[i])
{
a[flag]=a[i];
a[i]=temp;
}
}
}
//输出!!
void display(int *a,int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
int main()
{
int a[]={1,3,5,8,9,2,4,6,9,7};
int length_a=sizeof(a)/sizeof(a[0]);
cout<<"排序前数组:";
display(a,length_a);
Simple_Sort(a,length_a);
cout<<"排序后数组:";
display(a,length_a);
system("pause");
return 0;
}
输出结果为: