不多说,直接放代码
选择排序(Selection sort)工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,
直到全部待排序的数据元素排完。一共需要比较(n^2-n)/2次,在n很大时相当于n^2,故O(n^2)。
选择排序的比较次数是最多的,为什么还会有选择排序呢?因为它和冒泡排序相比,交换次数少很多,n值较小时,
选择排序比冒泡排序快
#include<iostream>
int main()
{
int a[20]={1,2,3,4,5,6,7,8,9,10,20,19,18,17,16,15,14,13,12,11};
int n=sizeof(a)/sizeof(a[0]);//可以用这个方法求出数组中数字的个数,方便在不知个数的情况下进行排序
int c;//作为最大的数与前面的数互换的中转站
for(int i=n-1;i>0;i--)
{
int m=0;//作为最大的数的位置
for(int j=1;j<i+1;j++)//找出此次循环中最大的数,然后与此次循环中最后的数交换位置
{
if(a[m]<=a[j])
{m=j;}//记录下最大数的位置
}
c=a[m];
a[m]=a[i];
a[i]=c;
}
for(int i=0;i<20;i++)//输出排序结果
{std::cout<<a[i]<<" ";}
system("pause");
return 0;
}
运行结果如下: