То, что я пытаюсь сделать, - это запросить пользователя для типа функции сортировки, сортировки patter, размера массива, размера приращения массива и количества тестов. Затем я хочу, чтобы он сохранил его. Тем не менее, есть пара проблем с этой программой.алгоритмы сортировки в python
Как-то, когда я выбираю случайный узор, он дает мне некоторые странные ответ вроде:
1543 0,002
600 0,020
1400 0,08
Ее не очень в порядке. Я думаю, что что-то не так с циклом for.
def rand_array(n):
''' returns sorted array of integers of size n'''
R=[randint(1, 1000*n) for i in xrange(n)]
return R
def sorted_array(n):
''' returns a sorted array of n integers'''
return [i for i in xrange(1,n+1)]
def rev_array(n):
'''returns an array of n integers in reverse order'''
R= [i for i in reversed(xrange(1,n+1))]
return R
def sort_timehelp(x,f):
''' This times the quick sort algorithm as it must take 3 variables'''
high=len(x)
low=0
t0=clock()
f(x,low,high)
t1=clock()
dt=t1-t0
return dt
def main():
myinfo()
info()
while True:
print '==================== to quit enter Control-c=================='
sortfunction=input("Choose a sort function: ")
s=input("Choose a pattern: ")
n=input("Array Size: ")
increment=input("Increment size: ")
y=input("Number of tests: ")
if s == 1:
x=rand_array(n)
elif s ==2:
x= sorted_array(n)
elif s==3:
x=rev_array(n)
if sortfunction==1:
i=0
output="algorith: quick sort \n input data: %s" %s
print output
while i<y:
i=i+1
ff=0.0
array=x[increment-1:n:increment]
for my in array:
ff+=sort_timehelp(x,quick_sort)
output="%d\t %f" %(my, ff)
print output
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","w")
fileout.write(output)
fileout.close()
Вторая проблема заключается в том, что, когда я пытаюсь сохранить данные, которые он сохраняет только последние данные, но я хочу, чтобы сохранить все.
Буду признателен за любую помощь.
Редактировать: функция выбора времени и массив и алгоритм сортировки Я хочу сохранить числа с шагом и соответствующим временем. (thats where my for loop)
Несколько комментариев: ** 1) ** Почему вы передаете два аргумента в свою функцию сортировки 'sortfun (x, n)'? ** 2) ** Строки вашего документа фактически не описывают ваши функции. ** 3) ** Когда вы говорите, что хотите сохранить все, вы имеете в виду в каждой ветви 'while True' или каждый экземпляр переменной' output'? – bossylobster
строки после 'output = "% d \ t% f"% (my, ff) вывод печати не имеют должным образом отступов. –
вложения верны –