defbubble_sort(x):for i inrange(len(x)):for j inrange(1,len(x)-i):if x[j-1]> x[j]:
x[j-1], x[j]= x[j], x[j-1]return x
Insertion Sort
definsert_sort(x):for i inrange(len(x)):for j inrange(i):if x[i]< x[j]:
tmp = x[i]for p inrange(i, j,-1):
x[p]= x[p-1]
x[j]= tmp
return x
Selection Sort
defselect_sort(x):for i inrange(len(x)):for j inrange(i+1,len(x)):if x[i]> x[j]:
x[i], x[j]= x[j], x[i]return x
Merge sort
defmerge(left, right):
i, j, res =0,0,[]while i <len(left)and j <len(right):if left[i]<= right[j]:
res.append(left[i])
i +=1else:
res.append(right[j])
j +=1
res += left[i:]or right[j:]return res
defmerge_sort(x):iflen(x)<=1:return x
mid =len(x)//2
left = merge_sort(x[:mid])
right = merge_sort(x[mid:])return merge(left, right)
Quick Sort
defquick_sort(x, low, high):if low >= high:return x
base, left, right = x[low], low, high
while left < right:while left < right and x[right]>= base:
right -=1
x[left]= x[right]while left < right and x[left]<= base:
left +=1
x[right]= x[left]
x[left]= base
quick_sort(x, low, left-1)
quick_sort(x, left+1, high)return x