from time import clock import sys def merge(list, first, last, sred): helper_list = [] i = first j = sred + 1 while i <= sred and j <= last: if list[i] <= list[j]: helper_list.append(list[i]) i += 1 else: helper_list.append(list[j]) j += 1 print j while i <= sred: helper_list.append(list[i]) i +=1 while j <= last: helper_list.append(list[j]) j += 1 for k in range(0, last - first + 1): list[first + k] = helper_list[k] def insertion_sort(list): for i in range(1, len(list)): save = list[i] j = i while j > 0 and list[j - 1] > save: list[j] = list[j - 1] j -= 1 list[j] = save return list def merge_sort_r(list, first, last): if first < last: sred = (first + last)/2 if(last-first == 15): list[first:last+1]=insertion_sort(list[first:last+1]) merge_sort_r(list, first, sred) merge_sort_r(list, sred + 1, last) merge(list, first, last, sred) f=open("in10_5a.txt","r") f1=open("out_10_5b.txt","w") start=clock() list=f.readline().split(",") for i in range(0,len(list)): list[i]=int(list[i]) merge_sort_r(list, 0, len(list)-1) for i in list: f1.write(str(i)+",") memory=sys.getsizeof(i)+sys.getsizeof(f)+sys.getsizeof(f1)+sys.getsizeof(list)+sys.getsizeof(start) f1.write("\n\nExecution Time:"+str(clock()-start)+"\nMemory used: "+str(memory)) f.close() f1.close()