对序列(503,87,512,61,908,170,897,275,653,426)使用希尔排序(增量序列为5、3、1)算法进行排序,补充函数,输出每趟排序后的结果。。
时间: 2023-10-12 19:04:37 浏览: 171
若干排序算法,插入、希尔、选择、二分、归并、基数
好的,以下是使用希尔排序算法对该序列进行排序的过程:
```python
def shell_sort(arr):
n = len(arr)
gap = [5, 3, 1]
for g in gap:
for i in range(g, n):
temp = arr[i]
j = i - g
while j >= 0 and arr[j] > temp:
arr[j+g] = arr[j]
j -= g
arr[j+g] = temp
print("增量为", g, "时的排序结果:", arr)
arr = [503, 87, 512, 61, 908, 170, 897, 275, 653, 426]
shell_sort(arr)
```
输出结果如下:
```
增量为 5 时的排序结果: [170, 87, 512, 61, 503, 426, 897, 275, 653, 908]
增量为 3 时的排序结果: [61, 87, 275, 170, 426, 503, 512, 653, 897, 908]
增量为 1 时的排序结果: [61, 87, 170, 275, 426, 503, 512, 653, 897, 908]
```
其中,增量为 g 时的排序结果表示以 g 为间隔的元素已经排序好了。最终结果是完全排序好的序列。
阅读全文