如何在Python中将选择排序拆分为min_index和selection_sort两个函数
选择排序函数拆分方案
完全可以按你的要求拆分,这种拆分方式将「查找未排序区间最小下标」和「排序主逻辑」解耦,代码可读性和可维护性更强。
原代码问题修正
你提供的现有代码存在缩进错误:内层查找最小元素的循环、元素交换逻辑都写在了外层循环之外,无法正常实现排序功能,拆分前需要先修正该逻辑问题。
拆分后完整实现代码
# 功能:返回列表l中,从start_index下标到列表末尾的最小元素对应的下标 def min_index(l, start_index): min_idx = start_index for j in range(start_index + 1, len(l)): if l[min_idx] > l[j]: min_idx = j return min_idx # 选择排序主逻辑 def selection_sort(l): for i in range(len(l)): # 调用min_index获取当前未排序区间的最小元素下标 current_min_idx = min_index(l, i) # 交换当前未排序区间起点和最小元素的位置,完成本轮排序 l[i], l[current_min_idx] = l[current_min_idx], l[i] return l # 测试运行 l = [64, 25, 12, 22, 11] selection_sort(l) print(l)
运行逻辑说明
min_index为独立功能函数,可单独调用调试,输入为待查找列表和起始下标,输出为目标区间最小元素的下标selection_sort作为主逻辑,每轮循环将未排序区间的起始下标传入min_index,拿到返回的最小下标后执行元素交换- 两个函数通过参数传递和返回值关联运行,完全符合你要求的拆分结构
内容的提问来源于stack exchange,提问作者Max-ine-93
相关产品推荐
相关产品推荐

