选择排序
两两比较大小,找出极值,将极值放置在固定的位置
升序排列的实现: ----> 优化点:可以使用二元选择排序法,一次性找出极大值和极小值;减少迭代元素的次数
lst = [10, 11, 14, 16, 14, 13, 3, 19, 12, 20] n = len(lst) for i in range(n): minindex = i for j in range(i+1,n): if lst[minindex] > lst[j]: minindex = j if i !=minindex: lst[minindex],lst[i] = lst[i],lst[minindex] print(lst)
二元选择排序实现: 减少迭代元素的次数
lst = [10, 11, 14, 16, 14, 13, 3, 19, 12, 20] length = len(lst) for i in range(length//2): maxindex = i minindex = -i-1 minorigin = minindex for j in range(i+1, length-i): if lst[minindex] > lst[-j-1]: minindex = -j-1 if lst[maxindex] < lst[j]: maxindex = j if i != maxindex: lst[maxindex], lst[i] = lst[i], lst[maxindex] if (i == minindex) or (i == length + minindex): minindex = maxindex if minorigin != minindex: lst[minindex], lst[minorigin] = lst[minorigin], lst[minindex] print(lst)