在轮子越来越多,越来方便调用的今天,基础算法的实现也被淡忘,虽然工作中不太需要自己造基础轮子,但其背后的思想对提高编程水平还是很有指导意义,特此记录。
- 创建随机数组
import numpy as np
array = np.random.randint(0, 100, 1000)
- 冒泡排序
def bubble_sort(input_array):
array = input_array.copy()
for i, _ in enumerate(array):
for j, _ in enumerate(array[:-(i+1)]):
if array[j+1] < array[j]:
array[j], array[j+1] = array[j+1], array[j]
return array
%%time # 在jupyter下执行
bubble_sort(array)
- 快速排序
def quick_sort(input_array):
array = input_array.copy()
def sort(left, right):
if left > right:
return
temp = array[left]
i = left
j = right
while i != j:
while array[j] >= temp and i < j:
j -= 1
while array[i] <= temp and i < j:
i += 1
if i < j:
array[i], array[j] = array[j], array[i]
array[left], array[i] = array[i], temp
sort(left, i-1)
sort(i+1, right)
return
sort(0, len(array)-1)
return array
%%time # 在jupyter下执行
quick_sort(array)