Advertisement
Guest User

Finding duplicates python script

a guest
Mar 20th, 2012
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.54 KB | None | 0 0
  1. from random import randint
  2. from time import time
  3. from math import sqrt
  4.  
  5. def generate_array(size):
  6.     return [randint(1,size*10000) for _ in xrange(size)]
  7.  
  8. def find_duplicates_method_1(array):
  9.     print "Method 1:"
  10.     for i in xrange(len(array)-1):
  11.         for j in xrange(i+1, len(array)):
  12.             if array[i] == array[j]:
  13.                 print "Duplicate found, array[%d] and array[%d] are both equal to %d" % (i, j, array[i])
  14.    
  15.     print ""
  16.    
  17. def find_duplicates_method_2(array):
  18.     print "Method 2:"
  19.     array2 = [(v, i) for i,v in enumerate(array)]
  20.     array2.sort()
  21.    
  22.     for i in xrange(len(array2)-1):
  23.         if array2[i][0] == array2[i+1][0]:
  24.             print "Duplicate found, array[%d] and array[%d] are both equal to %d" % (array2[i][1], array2[i+1][1], array2[i][0])
  25.    
  26.     print ""
  27.    
  28. def find_duplicates_method_3(array):
  29.     print "Method 3"
  30.     hashtable = {}
  31.    
  32.     for i,v in enumerate(array):
  33.         if v in hashtable:
  34.             print "Duplicate found, array[%d] and array[%d] are both equal to %d" % (hashtable[v], i, array[i])
  35.        
  36.         hashtable[v] = i
  37.    
  38.     print ""
  39.  
  40. if __name__ == "__main__":
  41.     a = generate_array(10000)
  42.     t = time()
  43.    
  44.     find_duplicates_method_1(a)
  45.    
  46.     print "Method one finished in " + str(time() - t)
  47.     t = time()
  48.    
  49.     find_duplicates_method_2(a)
  50.    
  51.     print "Method two finished in " + str(time() - t)
  52.     t = time()
  53.    
  54.     find_duplicates_method_3(a)
  55.    
  56.     print "Method three finished in " + str(time() - t)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement