常用排序算法
用python写一下几个常用的排序算法
选择排序
def select_sort(arr):
length = len(arr)
for i in range(length - 1):
big = i
for j in range(i + 1, length):
if arr[j] < arr[big]:
big = j
temp = arr[i]
arr[i] = arr[big]
arr[big] = temp
return arr
插入排序
def insert_sort(arr):
n = len(arr)
for i in range(1, n):
pre = i - 1
current = arr[i]
while pre >= 0 and arr[pre] > current:
arr[pre + 1] = arr[pre]
pre -= 1
arr[pre + 1] = current
return arr
冒泡排序
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
is_orderly = True
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
temp = arr[j + 1]
arr[j + 1] = arr[j]
arr[j] = temp
is_orderly = False
if is_orderly:
return arr
return arr
快排
def division(arr, left, right):
divide = arr[left]
while left < right:
while left < right and arr[right] >= divide:
right -= 1
arr[left] = arr[right]
while left < right and arr[left] <= divide:
left += 1
arr[right] = arr[left]
arr[left] = divide
return left
def quick_sort(arr, left, right):
if left < right:
mid = division(arr, left, right)
quick_sort(arr, left, mid - 1)
quick_sort(arr, mid + 1, right)