繁体   English   中英

运行时间 while 循环条件

[英]Run time while loop condition

def selection_sort(a):
    for i in range(0, len(a) - 1):
        minIndex = i
        for j in range(i + 1, len(a)):
            if a[j] < a[minIndex]:
                minIndex = j
            if minIndex != i:
                a[i], a[minIndex] = a[minIndex], a[i]

def selection_sort_runs():
    run_time_list = []
    n = 1
    while [having trouble thinking of loop condition here]
        start_time = time.time()
        rand = [random.randint(0, 100) for x in range(1, 10001*n)]
        selection_sort(rand)
        end_time = time.time()
        run_time = end_time - start_time
        run_time_list.append(run_time)
        if run_time < 60:
            n += 1

我想继续循环直到 run_time 大于 60,但我想不出一个条件可以让我这样做并将 n 加一,因为 run_time 是包含在循环内部的产品,有什么想法吗?

您有两个可能的选择是使用break语句

    while True:
        start_time = time.time()
        rand = [random.randint(0, 100) for x in range(1, 10001*n)]
        selection_sort(rand)
        end_time = time.time()
        run_time = end_time - start_time
        run_time_list.append(run_time)
        if run_time < 60:
            n += 1
        else:
            break

或者您可以重构代码,以便在循环外初始化run_time变量。

run_time = -1        
while run_time < 60:
        start_time = time.time()
        rand = [random.randint(0, 100) for x in range(1, 10001*n)]
        selection_sort(rand)
        end_time = time.time()
        run_time = end_time - start_time
        run_time_list.append(run_time)
        if run_time < 60:
            n += 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM