码迷,mamicode.com
首页 > 编程语言 > 详细

算法之LOWB三人组之选择排序

时间:2018-11-06 00:46:19      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:src   生成   https   tps   images   imp   img   http   ges   

选择排序

思想是在一个列表中每次循环一遍,拿到最小值,接着再从剩下的无序区中继续拿最小值,如此循环,直到结束。

# 最简单的一个选择排序,循环一个列表,拿到最小值,添加到一个新列表,之后在列表中删除这个最小值,继续再剩下的值中找最小值,往复循环。
def select_sort_simple(li):
    new_li = []
    for i in range(len(li)):
        min_val = min(li)
        new_li.append(min_val)
        li.remove(min_val)
    return new_li

这个算法有明显的缺点,因为是生成了两个列表,占用空间

正宗的选择排序

def select_sort(li):
    for i in range(len(li)-1):  # 需要选择n-1趟,最后一次不需要再找了
        min_loc = i  # 我们把每次得到的最小值放到第一位,刚开始假定最小值的索引就是i
        # 剩下的无序区则为 i,len(i),顾头不顾尾
        for j in range(i+1, len(li)):
            #  接下来遍历无序区找比假定的min_loc的值还小的
            if li[j] < li[min_loc]:
                min_loc = j
        # 如果最小值不是假定的i,一旦找到,交换最小值位置
        if min_loc != i:
            li[min_loc], li[i] = li[i], li[min_loc]
        print(li)
li = [3, 2, 1, 4, 8, 7, 6, 5]

select_sort(li)

技术分享图片

看这个的查找步骤,先把第一次的3作为了最小值,然后去循环剩下的[2,1,4,8,7,6,5],一旦找到了1
就把1和3的位置进行了调换,得到了[1,2,3,4,8,7,6,5]
此时最小值为2,过,最小值为3,过,最小值为4,过
直到最小值为8,5和8调换,最小值7,6和7掉换,最后一位不走,程序结束

算法之LOWB三人组之选择排序

标签:src   生成   https   tps   images   imp   img   http   ges   

原文地址:https://www.cnblogs.com/lishi-jie/p/9912281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!