import time import sys def mergesort(lst): global no_swap global no_comp if(len(lst) <= 1): return lst if(len(lst)<=16) : for i in range(1, len(lst)): t = lst[i] for j in range(0, i): no_comp=no_comp+1 no_swap=no_swap+1 if(t < lst[j]): z = lst[j] lst[j] = t t = z lst[i] = t return lst left = mergesort(lst[:len(lst)/2]) right = mergesort(lst[len(lst)/2:len(lst)]) result = [] while len(left) > 0 and len(right)> 0: if( int(left[0]) > int(right[0])): no_comp=no_comp+1 result.append(right.pop(0)) else: no_comp=no_comp+1 result.append(left.pop(0)) if(len(left)>0): result.extend(mergesort(left)) else: result.extend(mergesort(right)) return result f=open('in_sec_10_5.txt','r') z=f.readline() a1=z.split(", ") z1=f.readline() a2=z1.split(", ") z2=f.readline() a3=z2.split(", ") z3=f.readline() a4=z3.split(", ") z4=f.readline() a5=z4.split(", ") for i in range(0,len(a1)): a1[i]=int(a1[i]) for i in range(0,len(a2)): a1[i]=int(a1[i]) for i in range(0,len(a3)): a1[i]=int(a1[i]) for i in range(0,len(a4)): a1[i]=int(a1[i]) for i in range(0,len(a5)): a1[i]=int(a1[i]) t1=time.clock() no_swap=0 no_comp=0 f1=open('out_15_sec10_5.2.txt','w') f.close() no_swap=0 no_comp=0 t1=time.clock() f1=open('out_15_sec10_5.2.txt','w') f1.write(str(mergesort(a1))) f1.write("\nSET COMPLETE \n") f1.write(str(mergesort(a1))) f1.write("\nSET COMPLETE \n") f1.write(str(mergesort(a1))) f1.write("\nSET COMPLETE \n") f1.write(str(mergesort(a1))) f1.write("\nSET COMPLETE \n") f1.write(str(mergesort(a1))) f1.write("\nSET COMPLETE \n") t2=time.clock() t=t2-t1 mem=sys.getsizeof(a1)+sys.getsizeof(a2)+sys.getsizeof(a3)+sys.getsizeof(a4)+sys.getsizeof(a5)+sys.getsizeof(no_comp)+sys.getsizeof(no_swap) f1.write("no. of swaps=%d\nno.of comparisons=%d\n"%(no_swap,no_comp)) f1.write("time taken=%f\nmemory used=%dbytes"%(t,mem)) f1.close()