算法--选择排序

选择排序

一趟遍历记录最小的数,放到第一个位置;

再一趟遍历记录剩余列表中最小的数,继续放置;

........

问题是:怎么选出最小的数?

代码关键点:

  • 无序区
  • 最小数的位置

 

 

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)

posted @ 2020-05-14 20:42  静静别跑  阅读(121)  评论(0编辑  收藏  举报