获取冒泡排序执行时间时遇TypeError:需整数却得NoneType
解决冒泡排序计时的TypeError问题
错误根源
bubbleSort无返回值:该函数仅修改输入数组,未定义return语句,调用后默认返回None。- 参数传递错误:
get_time(bubbleSort(list))中,list是Python内置类型而非具体数组实例,且bubbleSort(list)返回None,传给time.sleep()时触发类型错误(sleep需要整数/浮点数,而非None)。 get_time逻辑错位:原函数是计时time.sleep(),而非目标排序函数的执行时间。
修复后的完整代码
import time def bubbleSort(array): for i in range(len(array)): for j in range(0, len(array) - i - 1): if array[j] > array[j + 1]: # 简化元素交换逻辑 array[j], array[j + 1] = array[j + 1], array[j] def get_time(func, *args): start = time.time() func(*args) # 执行待计时的目标函数 end = time.time() return end - start # 替换为你需要测试的具体数组 test_array = [3, 1, 4, 1, 5, 9, 2, 6] execution_time = get_time(bubbleSort, test_array) print(f"冒泡排序执行时间:{execution_time:.6f} 秒")
核心修复说明
- 重构
get_time为通用计时函数:接受待执行函数及其参数,执行后返回耗时。 - 传入具体测试数组:避免直接使用
list内置类型,确保bubbleSort能正常处理。 - 可选优化:用Python元组解包简化交换操作,替代临时变量写法。
内容的提问来源于stack exchange,提问作者Thiago Ribeiro
相关产品推荐
相关产品推荐

