数据结构之Python实现选择排序election sort

"""选择排序"""
"""
思想是:对一个列表进行查找,记录下最小值和下标,之后根据下标查找出最小的那个元素,删掉的同时加入到另一个列表中
      这样就形成了按照从小到大排序的效果。
"""

# 查找列表中最小的元素,然后进行排序
def ChooseSmall(arr):
    smalllist = arr[0]  # 把列表中第一个元素取出来
    smalllist_index = 0  # 第一个元素的下标
    for i in range(1, len(arr)):  # 把列表中的元素进行下标遍历
        # 如果此处的<= 变成>= 就是按照从大到小排列
        if arr[i] <= smalllist:  # 判断如果遍历出来的数据小于我们进行判断的元素,时间复杂度O(n²)
            smalllist = arr[i]  # 把小于的列表中的元素直接赋值给我们判断的元素
            smalllist_index = i  # 把小于的元素的下标给判断元素的下标
    return smalllist_index  # 把我们最小的元素的下标直接返回

def ChooseSort(arr):
    NewArr = list()  #  定义一个空的列表来接收我们排序出来的数据
    for i in range(len(arr)):  # 从第一个数据进行遍历,到最后一个数据,range不取len(arr)
        smallnum = ChooseSmall(arr)  # 用上面的函数找出来,最小值
        NewArr.append(arr.pop(smallnum))  # 把我们找出来的最小值加到新的列表中,在从原先的列表中删除掉
    return NewArr

NumList = [9,2,3,60,88,1,4]

SortList = ChooseSort(NumList)
print(SortList)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值