【问题描述】给出一组数据,请用希尔排序将其按照从小到大的顺序排列好。 【输入形式】原始数据,以0作为输入的结束;第二行是增量的值,都只有3个。 【输出形式】每一趟增量排序后的结果 【样例输入】 8 3 6 1 68 12 19 3 1 0 5 3 1 【样例输出】 8 3 3 1 68 12 19 6 1 1 3 1 8 6 3 19 68 12 1 1 3 3 6 8 12 19 68
时间: 2023-11-22 22:53:46 浏览: 115
以下是希尔排序的 Python 代码实现,可以参考一下:
```python
def shell_sort(arr, gaps):
n = len(arr)
for gap in gaps:
# 对每个子序列进行插入排序
for i in range(gap, n):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
print(arr)
# 读入数据
data = []
while True:
num = input().strip()
if num == '0':
break
data.append(int(num))
gaps = list(map(int, input().split()))
# 希尔排序
shell_sort(data, gaps)
```
输入示例:
```
8 3 6 1 68 12 19 3 1 0
5 3 1
```
输出示例:
```
[8, 3, 6, 1, 68, 12, 19, 3, 1]
[1, 3, 6, 1, 68, 12, 19, 3, 8]
[1, 3, 1, 8, 6, 3, 19, 68, 12]
[1, 1, 3, 3, 6, 8, 12, 19, 68]
```
阅读全文