数据结构之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)
点赞