数据结构选择排序

Posted Bitdancing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构选择排序相关的知识,希望对你有一定的参考价值。

常见的排序算法有以上八种,所以预估会分成几期来讲,感兴趣的朋友们不妨点个收藏专栏。 ღ( ´・ᴗ・` )比心


选择排序

思想方法

选择排序就是不断取出最大或者最小的数,关键点在于选数的方法上,这里基于选数进行第一次优化。每次选出最大和最小的数。

其次,可以使用建堆的方式来选数,详细看这一篇 堆排序

动图演示

选择一个数:

图解分析

有这样一个数组,要求升序排列。
每次找出最大值和最小值,分别和end数和begin数进行交换。

注意点:此时maxi位于begin处,mini值和begin值交换的时候,maxi的值被改变了,所以需要对maxi进行修正。

然后++begin,–end,进入下一轮循环。

代码

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[maxi])
				maxi = i;
			if (a[i] < a[mini])
				mini = i;
		

		Swap(&a[begin], &a[mini]);
		//修正maxi
		if (begin == maxi)
		
			maxi = mini;
		
		Swap(&a[maxi], &a[end]);

		++begin;
		--end;
	

以上是关于数据结构选择排序的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

VSCode自定义代码片段——CSS选择器

VSCode自定义代码片段6——CSS选择器

在第6731次释放指针后双重免费或损坏

Java数据结构—排序算法

如何从设置中获取数据并发送到此片段