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

如何为冒泡排序计时?求计时实现方案及代码点评

给冒泡排序添加计时功能 + 代码点评

嘿,我来帮你搞定冒泡排序的计时需求,顺便聊聊这段代码的优缺点~

一、实现计时功能

要给排序函数加计时,我们可以用Python的time模块,其中time.perf_counter()是计时短任务的最佳选择,精度比time.time()更高。下面是修改后的完整代码:

import time

def bubble_sort(arr):  # 把参数名`list`改成`arr`,避免覆盖内置类型
    need_next_pass = True
    k = 1
    while k < len(arr) and need_next_pass:
        need_next_pass = False
        for i in range(len(arr) - k):
            if arr[i] > arr[i + 1]:
                # Python专属的简洁交换方式,不需要临时变量
                arr[i], arr[i + 1] = arr[i + 1], arr[i]
                need_next_pass = True

# 测试计时功能
if __name__ == "__main__":
    # 随便找个测试列表,你也可以换成自己的数据集
    test_nums = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
    # 记录排序开始时间
    start_time = time.perf_counter()
    bubble_sort(test_nums)
    # 记录排序结束时间
    end_time = time.perf_counter()
    # 打印耗时,保留6位小数更直观
    print(f"排序完成!耗时: {end_time - start_time:.6f} 秒")
    print("排序后的结果:", test_nums)

运行这段代码,就能看到排序完成后的精确耗时啦~

二、原冒泡排序代码的点评

优点

  • 提前终止优化:needNextPass这个变量设计得非常巧妙!如果某一轮遍历完全没有发生交换,说明列表已经是有序的了,直接终止循环,避免了后续无意义的遍历,比最基础的冒泡排序效率高不少。
  • 缩小遍历范围:用k变量来逐步缩小每一轮的遍历范围——每一轮冒泡都会把当前最大的元素“沉”到列表末尾,后续遍历不需要再碰这些已经排好的元素,这个细节能有效减少不必要的比较操作。

可以改进的地方

  • 参数命名:原代码用list作为参数名,这会覆盖Python的内置list类型,容易引发潜在的bug,建议改成arr、nums这类更安全的名字。
  • 代码风格:Python推荐使用蛇形命名法(比如need_next_pass而不是needNextPass),更符合PEP8编码规范,团队协作时可读性更高。
  • 交换方式:原代码用临时变量temp交换元素,其实Python支持a, b = b, a这种更简洁的写法,不需要额外变量,代码更清爽。

内容的提问来源于stack exchange,提问作者Tyler Dowsland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:36:50