首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让计时器打印值从bubblesort,不会打印我的最后一个值,除非我降低它?

让计时器打印值从bubblesort,不会打印我的最后一个值,除非我降低它?
EN

Stack Overflow用户
提问于 2022-11-30 23:24:49
回答 1查看 23关注 0票数 0
代码语言:javascript
复制
import sys
import time
from random import randint
import numpy as np

sys.setrecursionlimit(6000)
nums = [10, 50, 100, 500, 1000, 5000]

def bubble(A, n):
    for i in range(n - 1):
        if A[i] > A[i + 1]:
            A[i], A[i + 1] = A[i + 1], A[i]
    if n - 1 > 1:
        bubble(A, n - 1)

def time_by_bubble_sort(nums):
    time_taken_by_bubble_sort = []
    for num in nums:
        A = list(np.random.randint(low=1, high=num, size=num))
        st_time = time.time()
        bubble(A, len(A))
        end_time = time.time()
        time_taken = end_time - st_time
        time_taken_by_bubble_sort.append(time_taken)
    return time_taken_by_bubble_sort

print(time_by_bubble_sort(nums))

我想把时间和我的数值进行比较: 10,50,100,500,1000,5000为什么不为最后一个值(5000)生成一个时间,但是当我把它切换到2000或者删除它时,它会打印出来?

这是错误代码:退出代码-1073741571 (0xC00000FD)

在googling之后,我的递归函数可能是无限的,但我没有看到它。

抱歉英语不太好。

EN

回答 1

Stack Overflow用户

发布于 2022-12-03 20:11:30

根据sys.setrecursionlimit的说法,强调地雷:

最高可能的限制是与平台有关的。当用户拥有需要深度递归的程序和支持更高限制的平台时,可能需要将限制设置得更高。这应该谨慎行事,因为过高的极限会导致崩盘.

你6000的限额太高了。我的系统在大约2130次对冒泡的递归调用后崩溃,这就解释了为什么使用2000而不是5000工作。崩溃是由于Python进程的堆栈耗尽了空间,而空间依赖于平台。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74635282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档