Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint
- from time import time
- from math import sqrt
- def generate_array(size):
- return [randint(1,size*10000) for _ in xrange(size)]
- def find_duplicates_method_1(array):
- print "Method 1:"
- for i in xrange(len(array)-1):
- for j in xrange(i+1, len(array)):
- if array[i] == array[j]:
- print "Duplicate found, array[%d] and array[%d] are both equal to %d" % (i, j, array[i])
- print ""
- def find_duplicates_method_2(array):
- print "Method 2:"
- array2 = [(v, i) for i,v in enumerate(array)]
- array2.sort()
- for i in xrange(len(array2)-1):
- if array2[i][0] == array2[i+1][0]:
- print "Duplicate found, array[%d] and array[%d] are both equal to %d" % (array2[i][1], array2[i+1][1], array2[i][0])
- print ""
- def find_duplicates_method_3(array):
- print "Method 3"
- hashtable = {}
- for i,v in enumerate(array):
- if v in hashtable:
- print "Duplicate found, array[%d] and array[%d] are both equal to %d" % (hashtable[v], i, array[i])
- hashtable[v] = i
- print ""
- if __name__ == "__main__":
- a = generate_array(10000)
- t = time()
- find_duplicates_method_1(a)
- print "Method one finished in " + str(time() - t)
- t = time()
- find_duplicates_method_2(a)
- print "Method two finished in " + str(time() - t)
- t = time()
- find_duplicates_method_3(a)
- print "Method three finished in " + str(time() - t)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement