希尔排序
希尔排序是一个叫希尔的数学家提出的一种优化版本的插入排序。
首先取一个整数d1=n//2,将元素分为d1个组,每组相邻元素之间的距离为d1,在各组内进行直接插入排序。
取第二个整数d2=d1//2,重复上述分组排序过程,直到di=1,即所有元素在同一组内进行直接插入排序。
希尔排序是使整体数据越来越接近有序;最后一趟排序使得所有数据有序。
实现
# 希尔排序
def shell_sort(li):
n = len(li)
gap = n // 2
while gap &
插入排序Python实现
import random
a=[random.randint(1,999) for x in range(0,36)]
# 直接插入排序算法
def insertionSort(a):
for i in range(1,len(a)):
# 若下标为i的元素小于下标为i-1的元素,则将下标为i的元素放到合适位置
if a[i] = 0 and tm
这篇文章并不是介绍排序算法原理的,纯粹是想比较一下各种排序算法在真实场景下的运行速度。
算法由 Python 实现,可能会和其他语言有些区别,仅当参考就好。
测试的数据是自动生成的,以数组形式保存到文件中,保证数据源的一致性。
排序算法
直接插入排序
时间复杂度:O(n²)
空间复杂度:O(1)
稳定性:稳定
def insert_sort(array):
for i in range(len(array)):
for j in range(i):
if array[