Here is the iterative code for QuickSort
import time
import random
stack = []
def partition(data,p,q):
global stack
pivot = p
pivotvalue = data[q]
for index in range(p,q+1):
if data[index] < pivotvalue:
temp = data[index]
data[index] = data[pivot]
data[pivot] = temp
pivot = pivot + 1
temp = data[q]
data[q] = data[pivot]
data[pivot] = temp
return pivot
def qSort(data,p,q):
global stack
push(stack,p,q)
while isEmpty(stack) == False:
q = pop(stack)
p = pop(stack)
pivot = partition(data,p,q)
if pivot-1 > p:
push(stack,p,pivot-1)
if pivot+1 < q:
push(stack,pivot+1,q)
def push(stack,p,q):
stack.append(p)
stack.append(q)
def pop(stack):
global top
if(len(stack)==0):
return -1
element = stack.pop()
return element
def isEmpty(stack):
return len(stack) == 0
if __name__ == '__main__':
start_time = time.time()
data = (range(1000000,0,-1))
random.shuffle(data)
qSort(data,0,len(data)-1)
print time.time() - start_time, "seconds"
source
share