You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何binary_search函数被传入空列表?原列表并非空列表

问题原因及修复方案

核心原因

你的selection_sort函数虽然能输出(比如打印)有序列表,但它错误地返回了空列表,而非排序后的目标列表。当你调用binary_search(selection_sort(nums), 24)时,binary_search实际接收的第一个参数是空列表,自然无法找到目标值24,返回None。

常见的错误场景:

  • 函数内部生成了有序列表(比如用sorted_nums变量存储结果),但最终没有return sorted_nums,反而写了return []。
  • 函数是原地修改原列表完成排序,但最后没有return nums,而是错误返回了空列表。

修复方法

修改selection_sort函数,确保它返回排序后的列表:

原地排序实现(修改原列表)

def selection_sort(nums):
    for i in range(len(nums)):
        min_idx = i
        # 寻找未排序部分的最小值索引
        for j in range(i + 1, len(nums)):
            if nums[j] < nums[min_idx]:
                min_idx = j
        # 交换当前元素与最小值元素
        nums[i], nums[min_idx] = nums[min_idx], nums[i]
    # 返回排序后的原列表
    return nums

非原地排序实现(生成新列表)

def selection_sort(nums):
    sorted_nums = nums.copy()  # 复制原列表避免修改输入
    for i in range(len(sorted_nums)):
        min_idx = i
        for j in range(i + 1, len(sorted_nums)):
            if sorted_nums[j] < sorted_nums[min_idx]:
                min_idx = j
        sorted_nums[i], sorted_nums[min_idx] = sorted_nums[min_idx], sorted_nums[i]
    # 返回新的有序列表
    return sorted_nums

修改后,binary_search(selection_sort(nums), 24)就能正确接收排序后的列表,执行二分查找。

内容的提问来源于stack exchange,提问作者Sam Flynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:11:27