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))
//