排序算法之选择排序

Posted xiaodangdang

tags:

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

选择排序

概念:

将原始的列表分为两组:一组认为是排序好的(默认升序),另一组认为是未排序,重点是放在未排序部分;  

第一轮:默认位置0上的元素是最小的,然后对比其他位置元素将位置0上的元素真正最小元素进行调换;

第二轮:默认位置1上的元素是最小的,然后对比其他位置元素将位置1上的元素真正次二小元素进行调换;

          .

          .

          .

以此类推,一共进行n-1轮(此处n代表的是列表的长度)

时间复杂度:

      最优时间复杂度:O(N2)

      最差时间复杂度:O(N2)

稳定性:不稳定

Python代码:

 1 def select_sort(alist):
 2     n = len(alist)
 3     for j in range(n-1):
 4         min_index = j
 5         #min = alist[min_index]
 6         for i in range(j+1,n):
 7             if alist[min_index] > alist[i]:
 8                 #min = alist[i]
 9                 min_index = i
10         alist[min_index],alist[j] = alist[j],alist[min_index]
11 
12 
13 
14 if __name__ == "__main__":
15     alist = [23,45,13,56,78,34,23]
16     print("选择排序之前的原始列表:")
17     print(alist)
18     select_sort(alist)
19     print("选择排序之后的列表:")
20     print(alist)

 

输出结果:

技术图片

 

 

O(n2)

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

算法排序之堆排序

常用排序算法之选择排序

经典算法之选择排序

排序算法系列之选择排序

数据结构与算法之排序算法:选择排序

看动画学算法之:排序-选择排序