In [15]:
n = 5
e = 1
for i in range(1, n+1):
e = e * i
#e
def fac(n):
if n <= 1:
return n
return(n * fac(n-1))
d = fac(5)
print(d)
Example following pseudocode taken from Wikipedia
In [23]:
def partitionLomoto(my_list, low, high):
pivot = my_list[high]
print("Actual pivot", pivot)
print("Actual list before partitioning", my_list[low:high+1])
i = low
for j in range(low, high):
if my_list[j] <= pivot:
my_list[i], my_list[j] = my_list[j], my_list[i]
i = i+1
my_list[i], my_list[high] = my_list[high], my_list[i]
pivot = i
print("Actual list after partitioning", my_list[low:high+1])
print("New pivot position: ", pivot)
print("------------------")
return pivot
def quickSortLomoto(my_list, low, high):
if low < high:
pivot = partitionLomoto(my_list, low, high)
quickSortLomoto(my_list, low, pivot-1)
quickSortLomoto(my_list, pivot+1, high)
return my_list
In [24]:
my_unsorted_list = [21,11,31,9,8,19,1]
my_list = my_unsorted_list
quickSortLomoto(my_unsorted_list, 0, len(my_unsorted_list)-1)
Out[24]:
Example following pseudocode taken from Wikipedia
In [16]:
def partitionHoare(my_list, low, high):
pivot = my_list[low]
print("Actual pivot", pivot)
print("Actual list before partitioning", my_list[low:high])
i = low
j = high
while True:
while my_list[i] < pivot:
i = i + 1
print(i)
while my_list[j] > pivot:
j = j - 1
print(j)
if i >= j:
print("Actual list after partitioning", my_list[low:high])
print("New pivot position: ", pivot)
print("------------------")
return j
else:
my_list[i], my_list[j] = my_list[j], my_list[i]
return pivot
def quickSortHoare(my_list, low, high):
if low < high:
pivot = partitionHoare(my_list, low, high)
quickSortHoare(my_list, low, pivot)
quickSortHoare(my_list, pivot+1, high)
return my_list
In [20]:
my_unsorted_list = [21,11,31,9, 25, 8,19,1]
my_list = my_unsorted_list
quickSortHoare(my_unsorted_list, 0, len(my_unsorted_list)-1)
Out[20]:
Example following pseudocode taken from Wikipedia
In [1]:
def mergeSort(my_list):
if len(my_list) <= 1:
return my_list
half = len(my_list)//2
left_list = my_list[:half]
right_list = my_list[half:]
print("Left list :", left_list, "Right list :", right_list)
left_list = mergeSort(left_list)
right_list = mergeSort(right_list)
return merge(left_list, right_list)
def merge(left_list, right_list):
print("Merging...")
result = []
while len(left_list) > 0 and len(right_list) > 0:
if left_list[0] < right_list[0]:
print("Left :", left_list[0], "Right :", right_list[0])
result.append(left_list.pop(0))
print("Result :", result)
else:
print("Left :", left_list[0], "Right :", right_list[0])
result.append(right_list.pop(0))
print("Result :", result)
while len(left_list) > 0:
print("Left :", left_list[0])
result.append(left_list.pop(0))
print("Result :", result)
while len(right_list) > 0:
print("Right :", right_list[0])
result.append(right_list.pop(0))
print("Result :", result)
print("------------------")
return result
alist = [54,26,93,17,77,31,44,55,20]
sort = mergeSort(alist)
print(sort)