Python's Timsort — O(n log n)
lst = [3, 1, 4, 1, 5, 9, 2, 6]
lst.sort()
s = sorted(lst)
s = sorted(lst, reverse=True)
s = sorted(lst, key=abs)
Insertion sort — O(n²) worst
def insertion_sort(lst):
for i in range(1, len(lst)):
key = lst[i]
j = i - 1
while j >= 0 and lst[j] > key:
lst[j+1] = lst[j]
j -= 1
lst[j+1] = key
Merge sort — O(n log n)
def merge_sort(lst):
if len(lst) <= 1:
return lst
mid = len(lst) // 2
left = merge_sort(lst[:mid])
right = merge_sort(lst[mid:])
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i]); i += 1
else:
result.append(right[j]); j += 1
return result + left[i:] + right[j:]