0

我想创建一个具有与该特定时间相对应的特定数组增量的表。例如:

n     sec
100    0.2
200    0.4
etc.. 

Y是特定数组的尝试次数,n是数组大小,增量是特定增量

if sortfunction==1:
            i=0
            while i<y:
                dt=0
                for i in range(n):
                    i=i+increment
                    dt+=sort_timehelp(x,quick_sort)
                    output="%d %f\n" %(i,dt)
                    print output

例如,如果我将 N 设为 1000 并增加 100,那么它看起来就像上表。

现在我得到:

n    sec
100  0.001
101  0.0012
102  0.0014

等等它按1而不是增量大小

编辑:我有另一个问题:为什么这个 while 循环不会更多次?

   i=0
   while i<y:
        i=i+1
        dt=0
        for i in xrange(increment, n+increment, increment):
                dt+=sort_timehelp(x, quick_sort)
                output="%d %f\n" %(i,dt)
                print output

i 是数组测试的数量。为什么它不去,例如 2 次

编辑:没关系我用 for 循环代替。我有最后一个问题。如果我有很多这样的 if 语句怎么办,唯一的区别是排序函数,那么我如何将所有这些东西保存到文件中,因为当我尝试时它只会保存最后一个打印的语句

#
 saving=input("You want to save data ? type 0 to continue or 1 to save " )
 if saving == 0:
        continue
 if saving == 1:
        ask=raw_input("Type the name file: ")
        fileout=open(ask+".csv","a")
        fileout.write(output)
        fileout.close()

“保存”的缩进与sortfunction相同

4

2 回答 2

2

range(n) 函数返回一个列表 [0,1,2,...],然后 for 循环对其进行迭代。因此,当 i 为 0 并且您的 do 时i=i+increment,您的 i (100) 值被丢弃,并替换为列表的下一个元素 - 即 1。

您可以改为尝试for i in range(increment,n+increment,increment),然后删除 for 块中的第一行。range 函数本身将添加increment循环的每次迭代 - 即 i 将是 100,200,300,...,1000

于 2012-05-01T23:56:54.313 回答
0
for i in xrange(increment, (n+1)*increment, increment):
    dt+=sort_timehelp(x,quick_sort)
    output="%d %f\n" %(i,dt)
    print output
于 2012-05-01T23:49:30.100 回答