排序算法(二)选择类排序:简单选择排序,堆排序,锦标赛排序

本文详细介绍了选择类排序的三种算法:简单选择排序、锦标赛排序和堆排序。简单选择排序时间复杂度为O(n^2),不稳定性明显;锦标赛排序通过类似比赛的方式选择最小元素,时间复杂度为O(lgN);堆排序则利用完全二叉树性质,时间复杂度为O(nlgN),但不具备稳定性。
摘要由CSDN通过智能技术生成


本篇博客介绍的是选择排序中的三种排序;简单选择排序,锦标赛排序和堆排序

选择类排序的基本思想:每一趟在n-i+1个记录中选取关键字最小的记录最为有序序列中第i个记录。

一、简单选择排序

简单选择排序的基本思想:每i趟排序时,从第i个记录开始,通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换.

代码:

void SelectionSort2(int arr[],size_t size) //升序,找最小值放到前面
{
	for (size_t i = 0; i < size - 1; ++i) //少一次趟数
	{
		int pos = i; //标记最大或最小值
		for (size_t j = i + 1; j < size; ++j)
		{
			if (arr[pos] > arr[j])
			{
				pos = j;
			}
		}
		if (i != pos)
			std::swap(arr[i],arr[pos]);
	}
}
算法分析:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值