- Published on
Sorting Algorithms
Sorting Algorithms
Bubble Sort
//
//
//
//
#
nums = [20, 13, 3, 3, 4, 5, 1, 2, 8, 7, 9, 0, 11 ]
def bubble_sort(nums):
sorted = False
while not sorted:
sorted = True
for i in range(0, len(nums) - 1):
if nums[i] > nums[i + 1]:
sorted = False
nums[i], nums[i + 1] = nums[i + 1], nums[i]
return nums
print('Bubble Sort:', bubble_sort(nums))
//
Quick Sort
//
//
//
//
#
nums = [20, 13, 3, 3, 4, 5, 1, 2, 8, 7, 9, 0, 11 ]
def quick_sort(nums):
if len(nums) <= 1:
return nums
pivot = nums.pop()
left = []
right = []
for n in nums:
if n < pivot:
left.append(n)
else:
right.append(n)
return quick_sort(left) + [pivot] + quick_sort(right)
print('Quick Sort:', quick_sort(nums))
//
Selection Sort
//
//
//
//
#
nums = [20, 13, 3, 3, 4, 5, 1, 2, 8, 7, 9, 0, 11]
def selection_sort(nums):
for i in range(len(nums)):
min = i
for j in range(i + 1, len(nums)):
if nums[j] < nums[min]:
min = j
if min != i:
nums[min], nums[i] = nums[i], nums[min]
return nums
print('Selection Sort:', selection_sort(nums))
//
Merge Sort
//
//
//
//
#
nums = [20, 13, 3, 3, 4, 5, 1, 2, 8, 7, 9, 0, 11]
def merge_sort(arr):
if len(arr) < 2:
return arr
midIdx = len(arr) // 2
print(midIdx)
l = arr[:midIdx]
r = arr[midIdx:]
return merge(merge_sort(l), merge_sort(r))
def merge(left, right):
res = []
l = r = 0
while l < len(left) and r < len(right):
if left[l] < right[r]:
res.append(left[l])
l += 1
else:
res.append(right[r])
r += 1
res.extend(left[l:])
res.extend(right[r:])
return res
print(merge_sort(nums))
//