如何不使用sort、remove/del函数对int类型列表进行升序排序
升序排序实现方案
核心思路
采用标记法选择排序逻辑实现,全程不涉及删除操作,仅用循环、append方法即可完成要求:
- 初始化一个空列表存放排序后的结果
- 初始化一个和原列表长度一致的布尔标记列表,所有元素初始为
False,用来标记原列表中哪些元素已经被选入结果列表 - 每次循环遍历原列表所有未被标记的元素,找到其中的最小值
- 将找到的最小值
append到结果列表,同时把该元素对应的标记位置改为True - 重复上述步骤,直到所有元素都被标记,结果列表就是升序排序后的最终列表
实现代码
def custom_sort(int_list): n = len(int_list) # 标记数组,记录对应位置的元素是否已经被加入排序结果 used = [False] * n sorted_result = [] for _ in range(n): # 每次查找未使用的最小元素 min_val = None min_index = -1 for i in range(n): if not used[i]: if min_val is None or int_list[i] < min_val: min_val = int_list[i] min_index = i # 把最小元素加入结果,标记为已使用 sorted_result.append(min_val) used[min_index] = True return sorted_result # 测试示例 test_list = [5, 2, 9, 1, 5, 6] print(custom_sort(test_list)) # 输出 [1, 2, 5, 5, 6, 9]
逻辑说明
全程没有调用sort()、remove()、del等禁止使用的方法,仅用了for循环、列表append方法,完全符合约束要求。时间复杂度为O(n²),和基础选择排序效率一致,适用于中小规模的整数列表排序。
内容的提问来源于stack exchange,提问作者ddd9384
相关产品推荐
相关产品推荐

