测试萌新必备算法题之:选择排序

最后都变了- 提交于 2020-03-29 17:43:34

选择排序和冒泡排序的异同:

1、相同点:整体结构差不多

2、不同点:冒泡排序外层循环控制遍历次数,内层循环交换数据,只要满足就交换

       选择排序外层循环控制遍历次数,内存循环查询最大最小值,遍历完后只做一次数据交换

下面就来具体实现:

首先随机生成一个列表:

select_sort_list = [382, 273, 427, 274, 497, 209, 326, 498, 246, 79, 73, 72, 334, 490, 320, 185, 253, 43, 343, 97, 127, 312, 25, 368, 194, 76, 226, 248, 495, 126]

然后开始写选择排序的具体实现:

def select_sort(sort_list):
    # 循环次数
    for i in range(len(sort_list)-1):
        # 初始最小元素的索引为i
        min_idx = i
        # 遍历列表
        for j in range(i+1, len(sort_list)):
         # 有更小的元素,将索引给min_idx
            if sort_list[min_idx] > sort_list[j]:
                min_idx = j
        # 当最小元素索引发生了变化,交换数据位置
        if i != min_idx:
            sort_list[i], sort_list[min_idx] = sort_list[min_idx], sort_list[i]
    return sort_list

sort_result = select_sort(select_sort_list)
print(sort_result)

打印的结果为:

[25, 43, 72, 73, 76, 79, 97, 126, 127, 185, 194, 209, 226, 246, 248, 253, 273, 274, 312, 320, 326, 334, 343, 368, 382, 427, 490, 495, 497, 498]

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!