【问题描述】给出一组数据,请用希尔排序将其按照从小到大的顺序排列好。 【输入形式】原始数据,以0作为输入的结束;第二行是增量的值,都只有3个。 【输出形式】每一趟增量排序后的结果
时间: 2023-07-16 07:15:51 浏览: 79
以下是希尔排序的Python实现代码,可以参考:
```python
def shell_sort(arr, gaps):
for gap in gaps:
for i in range(gap, len(arr)):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
print("After sorting with gap", gap, ":", arr)
# 输入数据
data = []
while True:
x = int(input())
if x == 0:
break
data.append(x)
gaps = [5, 3, 1]
shell_sort(data, gaps)
```
假设输入数据为:3 5 1 4 6 7 9 8 2 0,增量的值为5、3、1。则程序的运行结果如下:
```
After sorting with gap 5 : [3, 1, 2, 0, 6, 7, 9, 8, 5, 4]
After sorting with gap 3 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
After sorting with gap 1 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
```
可以看到,程序按照要求进行了希尔排序,并在每一趟排序后输出了结果。
阅读全文