希尔排序
Created: March 15, 2022 5:16 PM
Introduction: 简单介绍什么是希尔排序
Source: 原创
Tags: 算法专栏
- 希尔排序(Shell Sort)是一种分组插入排序算法。
- 首先取一个整数d₁=n/2,将元素分为d₁个组,每组相邻量元素之间距离为d₁,在各组内进行直接插入排序。
- 取第二个整数d₂=d₁/2,重复上述分组排序过程,直到d₁=1,即所有元素在同一组内进行直接插入排序。
- 希尔排序每趟并不使某些元素有序,而是使整体数据越来越接近有序;最后一趟排序使得所有数据有序。
def insert_sort_gap(li,gap):
for i in range(gap,len(li)):
tmp = li[i]
j = i - gap
while j >= 0 and li[j] > tmp:
li[j+gap] = li[j]
j -= gap
li[j+gap] = tmp
def shell_sort(li):
d = len(li) // 2
while d >= 1:
insert_sort_gap(li,d)
d //= 2
相关参考
清华大学博士讲解Python数据结构与算法:https://www.bilibili.com/video/BV1uA411N7c5?p=34