排序系列二:选择排序

不多说,直接放代码

选择排序(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;
}

运行结果如下: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值