选择排序
一趟遍历记录最小的数,放到第一个位置;
再一趟遍历记录剩余列表中最小的数,继续放置;
........
问题是:怎么选出最小的数?
代码关键点:
- 无序区
- 最小数的位置
python代码实现:
li = [9, 2, 3, 7, 5, 6, 4, 8, 1] def select(lst): for i in range(len(lst) - 1): min = i # 把无序区第一个值拿出来 for j in range(i + 1, len(lst)): if lst[j] < lst[min]: # 如果谁的值比我小,交换 min = j if min != i: # 如果循环一趟,没有比第一个小的,就不用自己和自己交换了 lst[i], lst[min] = lst[min], lst[i] select(li) print(li)
时间复杂度:O(n2)