def bubble_sort(arr): n = len(arr) for j in range(n): for i in range(n - 1): if arr[i] > arr[i + 1]: swap(arr, i, i + 1)
def insertion_sort(arr): i = 1 while i < len(arr): j = i while j > 0 and arr[j - 1] > arr[j]: swap(arr, j, j - 1) j -= 1 i += 1
def selection_sort(arr): for i in range(len(arr) - 1): j_min = i for j in range(i + 1, len(arr)): if arr[j] < arr[j_min]: j_min = j if j_min != i: swap(arr, i, j_min)
def heap_sort(arr): n = len(arr) i = (n - 1) // 2 while i >= 0: heapify(arr, n, i) i -= 1 i = n - 1 while i > 0: swap(arr, i, 0) heapify(arr, i, 0) i -= 1
def heapify(arr, n, i): _max = i left = 2 * i + 1 right = 2 * i + 2 if left < n and arr[left] > arr[i]: _max = left if right < n and arr[right] > arr[_max]: _max = right if _max != i: swap(arr, _max, i) heapify(arr, n, _max)