Question: Need help with debugging this code in Python. Data Structures. def quickSort(alist): quickSortHelper(alist,0,len(alist)-1) def quickSortHelper(alist,first,last): if first: splitpoint = partition(alist,first,last) quickSortHelper(alist,first,splitpoint-1) quickSortHelper(alist,splitpoint+1,last) def partition(alist,first,last): pivotvalue
Need help with debugging this code in Python. Data Structures.
def quickSort(alist):
quickSortHelper(alist,0,len(alist)-1)
def quickSortHelper(alist,first,last):
if first:
splitpoint = partition(alist,first,last)
quickSortHelper(alist,first,splitpoint-1)
quickSortHelper(alist,splitpoint+1,last)
def partition(alist,first,last):
pivotvalue = alist[first]
leftmark = first+1
rightmark = last
done = False
while not done:
while leftmark <= rightmark and \
alist[leftmark] <= pivotvalue:
leftmark = leftmark + 1
while alist[rightmark] >= pivotvalue and \
rightmark >= leftmark:
rightmark = rightmark -1
if rightmark < leftmark:
done = True
else:
temp = alist[leftmark]
alist[leftmark] = alist[rightmark]
alist[rightmark] = temp
temp = alist[first]
alist[first] = alist[rightmark]
alist[rightmark] = temp
return rightmark
alist = [54,26,93,17,77,31,44,55,20]
quickSort(alist)
print(alist)
def quicksortRandom(alist, first, last):
if first < last:
splitpoint = partition(alist, first, last)
quicksort(alist, first, splitpoint-1)
quicksort(alist, splitpoint+1, last)
return alist
def partitionRandom(alist, first, last):
pivotvalue = randint(first, last)
temp = alist[last]
alist[last] = alist[pivotvalue]
alist[pivotvalue] = temp
pIndex = first
for i in range(first, last):
if alist[i] <= alist[last]:
temp = alist[i]
alist[i] = alist[pIndex]
alist[pIndex] = temp
pIndex += 1
temp1 = alist[last]
alist[last] = alist[pIndex]
alist[pIndex] = temp1
return pIndex
def gen(number, b=100000):
some_list = []
return [some_list.append(random.randint(0, b)) for x in xrange(number)]
alist = [2, 5, 6, 8, 3, 7, 5, 6, 20, 100, 85, -20]
if __name__ == '__main__':
print(quickSort(list, 0, len(list) - 1))
for element in list:
print( str(element) + ' ')
start = time.time()
quickSort(list, 0, len(list)-1)
end = time.time() - start
print(end)
for element in list:
print(str(element) + ' ')
start = time.time()
print(quicksortRandom(blist, 0, len(blist)-1))
end = time.time() - start
print(end)
for element in list:
print(str(element) + ' ')
for j in range(0, 11):
blist = gen(element)
start = time.time()
quickSort(blist, 0, len(blist)-1)
end = time.time() - start
print(end)
for element in list:
print(str(element) + ' ')
for j in range(0, 11):
blist = gen(element)
start = time.time()
print(quicksortRandom(blist, 0, len(blist)-1))
end = time.time() - start
print(end)
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
