排序算法之选择排序
选择排序
概念:
将原始的列表分为两组:一组认为是排序好的(默认升序),另一组认为是未排序,重点是放在未排序部分;
第一轮:默认位置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)