python-选择排序-有序区域和无序区域

选择排序可以对列表进行排序升序/降序可以使用min()/max()函数控制

具体实现查阅如下代码:

# 将列表分为有序区域和无需区域
list2 = [21, 32, 43, 23, -21, 34, -100, 200, 300]
# 将list2进行升序排序
# 第一次 有序区1 无序区8
min_index = list2.index(min(list2[0:]))
list2[0], list2[min_index] = list2[min_index], list2[0]
print(list2)
# 第二次 有序区2 无序区7
min_index = list2.index(min(list2[1:]))
list2[1], list2[min_index] = list2[min_index], list2[1]
print(list2)
# 第三次 有序区3 无序区6
min_index = list2.index(min(list2[2:]))
list2[2], list2[min_index] = list2[min_index], list2[2]
print(list2)

# 第n次 有序区9,无序区0 ,打印输出

# 转换为循环
for i in range(len(list2) - 1):  # -1 最后一次不需要执行
    min_index = list2.index(min(list2[i:]))
    list2[i], list2[min_index] = list2[min_index], list2[i]
print(list2)

def select_function(demo_list: list):
    """选择排序"""
    for i in range(len(demo_list) - 1):  # -1 最后一次不需要执行
        min_index = demo_list.index(min(demo_list[i:]))
        if i > min_index:  # 存在重复的元素时导致小标问题
            min_index = i
            for j in range(i+1, len(demo_list)):
                if demo_list[j] < demo_list[min_index]:
                    min_index = j
        demo_list[i], demo_list[min_index] = demo_list[min_index], demo_list[i]
    return demo_list


result = select_function([13, 50, 6, 6, 4])
print(result)

posted @ 2022-04-29 14:46  jasonchenYT  阅读(157)  评论(0编辑  收藏  举报