1.二分法
参考:https://www.runoob.com/w3cnote/ten-sorting-algorithm.html
2.选择排序 O(n^2)
从第二个元素开始,选择第二个元素之后剩余元素中的最小值,放置于第二个位置
def sort(array):
for i in range(len(array)):
for j in range(i + 1, len(array)):
if array[j] < array[i]:
c = array[i]
array[i] = array[j]
array[j] = c
3.插入排序 O(n^2)
小数据规模,或者数据基本有序时效率高
def isort(array):
for j in range(1, len(array)):
key = array[j]
i = j - 1
while i >= 0 and array[i] > key:
array[i + 1] = array[i]
i = i - 1
array[i + 1] = key
4.快速排序
选择排序是快速排序的基石
# 快速排序 思想:递归实现
# (1) 选择基准值。
# (2) 将数组分成两个子数组:小于基准值的元素和大于基准值的元素。
# (3) 对这两个子数组进行快速排序。
def sort(array):
if len(array) < 2:
return array
small = []
big = []
for i in range(1,len(array)):
if array[i] > array[0]:
big.append(array[i])
else:
small.append(array[i])
return sort(small) + [array[0]] + sort(big)
5.希尔排序
缩小增量排序,插入排序的改进
6.动态规划
未完待续