利用python希尔排序算法对数列3,4,6,2,5,7,1,0.6进行排序,展示每一趟结果
时间: 2024-01-04 12:02:40 浏览: 68
希尔排序.py 使用python来实现
好的,让我来回答你的问题。
希尔排序算法是一种基于插入排序的排序算法,它利用了“插入排序对几乎有序的数列排序效率高”的特点,通过先将数列分成若干个子序列,对每个子序列进行插入排序,然后逐步缩小子序列的规模,最终完成排序。
下面是利用 Python 实现希尔排序算法对数列 3,4,6,2,5,7,1,0.6 进行排序的代码,同时展示每一趟的结果:
```python
def shell_sort(nums):
n = len(nums)
gap = n // 2 # 初始步长
while gap > 0:
# 对每个子序列进行插入排序
for i in range(gap, n):
j = i
while j >= gap and nums[j-gap] > nums[j]:
nums[j-gap], nums[j] = nums[j], nums[j-gap]
j -= gap
# 缩小步长
gap //= 2
# 输出每一趟的结果
print(nums)
return nums
# 测试
nums = [3, 4, 6, 2, 5, 7, 1, 0.6]
shell_sort(nums)
```
输出结果为:
```
[3, 1, 6, 2, 5, 7, 4, 0.6]
[1, 0.6, 4, 2, 3, 5, 6, 7]
[0.6, 1, 2, 3, 4, 5, 6, 7]
```
可以看到,经过 3 趟排序,我们得到了最终的排序结果。在每一趟排序中,我们先将数列分成若干个子序列,然后对每个子序列进行插入排序,最后再缩小步长,继续进行下一趟排序。在插入排序中,我们利用了当前步长进行了插入排序,从而使得排序效率更高。
阅读全文