【数据结构】直接选择排序详解!

文章目录

1.直接选择排序

  • 🐧 begin 有可能就是 maxi ,所以交换的时候,要及时更新 maxi

  • 🍎 直接选择排序是不稳定的,例如: 9 [9] 5 [5],排序后,因为直接选择排序是会交换数据的,排序后可能变成了 [5] 5 [9] 9
cpp 复制代码
// 直接选择排序
// 时间复杂度: O(n^2)
void SelectSort(int* a, int n)
{
	int begin = 0, end = n - 1;

	while (begin < end)
	{

		int mini = begin, maxi = begin;

		for (int i = begin; i <= end; i++)
		{
			if (a[i] < a[mini])
				mini = i;

			if (a[i] > a[maxi])
				maxi = i;
		}

		Swap(&a[begin], &a[mini]);

		// 此时的 maxi 有可能已经改变
		if (begin == maxi)
			maxi = mini;


		Swap(&a[end], &a[maxi]);

		begin++, end--;
	}
}
相关推荐
Snow_day.4 分钟前
有关线段树应用(1)
数据结构·算法·贪心算法·动态规划·图论
知无不研8 分钟前
内存碎片与内存优化
开发语言·c++·内存优化·内存碎片·内存操作
m0_5613596712 分钟前
C++模块接口设计
开发语言·c++·算法
从此不归路20 分钟前
Qt5 进阶【11】图形视图框架:用 QGraphicsView 搭一个流程图编辑器
开发语言·c++·qt
wengqidaifeng40 分钟前
探索数据结构(二):空间复杂度
c语言·开发语言·数据结构
难得的我们41 分钟前
单元测试在C++项目中的实践
开发语言·c++·算法
Once_day42 分钟前
代码训练总结(1)算法和数据结构的框架思维
数据结构·算法
鹿角片ljp1 小时前
力扣125.验证回文串-双指针
数据结构·算法
夏乌_Wx1 小时前
练题100天——DAY44:回文链表 ★★☆☆☆
数据结构
-Try hard-1 小时前
数据结构|概念及单向有头链表
数据结构·算法·vim