Python实现希尔排序算法
希尔排序又称缩小增量排序,是插入排序的一种变体。其基本思想是先将待排序的序列进行分组(通常称为增量),对每组进行插入排序,然后逐步缩小增量,重复上述操作,直到增量为1,最后进行一次完整的插入排序。因为在序列被分组后,每个元素不仅能够和相邻的元素比较,还能够和相距较远的元素比较,因此希尔排序的比较次数会比插入排序少,所以效率也更高。
以下是Python实现希尔排序的代码:
def shell_sort(arr): n = len(arr) # 初始增量为数组长度的一半 gap = n // 2 while gap > 0: # 对每组进行插入排序 for i in range(gap, n): j = i while j >= gap and arr[j-gap] > arr[j]: arr[j-gap], arr[j] = arr[j], arr[j-gap] j -= gap # 缩小增量 gap //= 2
使用示例:
arr = [3, 7, 1, 9, 2, 8, 4, 6, 5] shell_sort(arr) print(arr) # 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9] str_arr = ["pidancode.com", "Python", "希尔排序", "皮蛋编程"] shell_sort(str_arr) print(str_arr) # 输出 ['Python', 'pidancode.com', '皮蛋编程', '希尔排序']
相关文章