选择排序

选择排序

‘’’
选择排序
‘’’

list = [3, 15, 48, 35, 4, 18, 2, 43, 8, 24, 1, 29, 6]


def selectionSort(arr):
    for i in range( len( arr ) - 1 ):  # 每轮都以开始的那个数为基准
        # 记录最小数的索引
        minIndex = i  # 首先第一轮基准是3,下边以3比较
        for j in range( i + 1, len( arr ) ):#i+1每次从确定后边开始比
            if arr[j] < arr[minIndex]:  # 2<3
                minIndex = j#确定一个小的位置再往后比看有没有比它更小的
        # i 不是最小数时,将 i 和最小数进行交换
        if i != minIndex:
            arr[i], arr[minIndex] = arr[minIndex], arr[i]
    return arr


print( selectionSort( list ) )
'''
原理:遍历以第一个为基准,开始和后边比,如果后边有比基准数小的则将基准数变为那个小的数,再往
后比,如果后边还有更小的则将这个更小的数变为基准数,在往后比,比到结尾如果还有更小的则把更小
作为基准数,若没有了,则将它与最开始的基准数调换。外层for确定了开始基准数调换位置方便后边小
的数调换到遍历(每次遍历开始位置不一)开头位置,内层for确定了最小数的位置,minindex的作用是
每次内层循环将最小的数位置给它,if的作用是判断是他自己不,不是在进行交换,最后与外层循环确定
最开始那个进行交换,外层每循环一次将确定一个最小的放在前边,外层循环完就从小到大排序好了。
'''
for i in range(len(list)-1):
    small=i
    for r in range(i+1,len(list)):
        if list[r]<list[small]:
            small=r
    if i !=small:
        list[i], list[small] = list[i], list[small]

原理图

在这里插入图片描述

发布了28 篇原创文章 · 获赞 0 · 访问量 312
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览