选择排序

选择排序

‘’’
选择排序
‘’’

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]

原理图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值