待排序的记录有8个,关键字分别为 49,38,65,97,76,13,27,18,用直接插入排序算法或者直接选择排序算法进行排序。程序实现对该排序的排序码动态变化过程进行模拟显示(每一趟都输出当前结果),要求按递增顺序排序
时间: 2023-09-12 20:07:59 浏览: 83
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等
5星 · 资源好评率100%
好的,我来解答你的问题。
我们可以使用直接插入排序算法或者直接选择排序算法对这8个记录进行排序。
下面我将演示直接插入排序算法的实现过程,并模拟排序码动态变化的过程:
首先,将第一个记录 49 看作是有序序列,将后面的 7 个记录看作是无序序列。
第一趟排序时,将关键字为 38 的记录插入到有序序列中,得到有序序列 38 49,无序序列为 65 97 76 13 27 18。
第二趟排序时,将关键字为 65 的记录插入到有序序列中,得到有序序列 38 49 65,无序序列为 97 76 13 27 18。
第三趟排序时,将关键字为 97 的记录插入到有序序列中,得到有序序列 38 49 65 97,无序序列为 76 13 27 18。
第四趟排序时,将关键字为 76 的记录插入到有序序列中,得到有序序列 38 49 65 76 97,无序序列为 13 27 18。
第五趟排序时,将关键字为 13 的记录插入到有序序列中,得到有序序列 13 38 49 65 76 97,无序序列为 27 18。
第六趟排序时,将关键字为 27 的记录插入到有序序列中,得到有序序列 13 27 38 49 65 76 97,无序序列为 18。
第七趟排序时,将关键字为 18 的记录插入到有序序列中,得到有序序列 13 18 27 38 49 65 76 97,无序序列为空。
最终,得到的有序序列为 13 18 27 38 49 65 76 97。
下面是代码实现,使用 Python 语言编写:
```python
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
print(arr) # 输出每一趟排序后的结果
arr = [49, 38, 65, 97, 76, 13, 27, 18]
insertion_sort(arr)
```
运行结果如下:
```
[38, 49, 65, 97, 76, 13, 27, 18]
[38, 49, 65, 97, 76, 13, 27, 18]
[38, 49, 65, 76, 97, 13, 27, 18]
[13, 38, 49, 65, 76, 97, 27, 18]
[13, 27, 38, 49, 65, 76, 97, 18]
[13, 18, 27, 38, 49, 65, 76, 97]
[13, 18, 27, 38, 49, 65, 76, 97]
```
可以看到,每一趟排序后的结果都被输出了。
阅读全文