There were a few mistakes with your code which might have lead to the recursion issues.
- You were overriding the built-in datatype 'list'.
- Your gen method was actually trying to create list of lists, instead of creating list of random numbers.
A few suggestion too:
- You should be reading into list comprehensions. :)
- You could use the timeit module for checking the time taken to complete your method execution.
The below code works as expected, if this is what you wanted to do.
import random
import time
def quick_sort_r(some_list):
less = []
equal = []
greater = []
# print some_list
if len(some_list) <= 1:
return some_list
else:
pivot = some_list[0]
for x in some_list:
if x < pivot:
less.append(x)
elif x > pivot:
greater.append(x)
else:
equal.append(x)
less = quick_sort_r(less)
greater = quick_sort_r(greater)
return greater + equal + less
def gen(number, b=100000):
"Generating list of random numbers"
some_list = []
return [some_list.append(random.randint(0, b)) for x in xrange(number)]
domain = [10000, 25000, 50000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000]
for element in domain:
print 'Results for: ' + str(element) + ' elements:'
for j in range(0, 10):
temp_list = gen(element)
start = time.time()
quick_sort_r(temp_list)
end = time.time() - start
print end
print '*************************'