数据结构选择排序
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注入(代码片段