递增与排序时间对应的数组

时间:2012-05-01 23:39:07

标签: python

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

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增加而不是增量大小

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

   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

我是阵列测试的数量。 为什么它没有例如2次

编辑:没关系我用于循环。 我有一个最后一个问题。 如果我有很多这样的if语句只是差异是一个sortfunction,那么如何将所有这些东西保存到文件中,因为当我尝试它时只会保存最后一个打印的语句

#
 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

相同

2 个答案:

答案 0 :(得分:2)

range(n)函数返回一个列表[0,1,2,...],然后for循环迭代。所以,当我为0并且你做i=i+increment时,你的i(100)的值被抛弃,并被替换为列表的下一个元素 - 即1。

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

答案 1 :(得分:0)

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