选择排序
Posted pyexile
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序相关的知识,希望对你有一定的参考价值。
选择排序一般分为简单选择排序和堆排序
简单选择排序
- 基本思想
简单选择排序的第i趟是从elem[i]~elem[i-1]中选择第i小的元素,并将此元素放到elem[i]处,也就是说,简单选择排序是从为排序的序列中选择最小的关键字,接着是次小的,以此类推。
- 复杂度分析
最外层for循环共循环n次,内层for循环共循环n-i次,可知总比较的次数为n(n+1)/2=O(n2),可知时间复杂度为O(n2)
- 代码实现
1 def simple_selection_sort(seq): 2 # 简单选择排序 3 for i in range(0, len(seq)-1): 4 min_val = i # 记录最小值对应的索引 5 for j in range(i+1, len(seq)): 6 if seq[j] < seq[min_val]: 7 min_val = j # 将min_val指向剩余序列最小值对应的缩影 8 if min_val != i: 9 seq[i], seq[min_val] = seq[min_val], seq[i] # 将剩余序列中最小值和剩余序列中第一个值交换
堆排序
- 基本思想
- 复杂度分析
最坏情况下时间复杂度为O(nlogn),相对快速排序在最坏情况下的时间复杂度为O(n2),这是最大的优势,而且只占用一个用于交换记录的临时存储空间,比快速排序用栈更节约存储空间
以上是关于选择排序的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段