dangdangA

导航

排序算法之选择排序

选择排序

概念:

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

第一轮:默认位置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)

posted on 2020-02-18 13:52  dangdangA  阅读(157)  评论(0编辑  收藏  举报