![](https://img.haomeiwen.com/i7186975/eb8fad727e8f1a47.png)
![](https://img.haomeiwen.com/i7186975/79265fb1186669ef.png)
![](https://img.haomeiwen.com/i7186975/e34d660c03ddf808.png)
图中假设的是尾插法 得到顺序的链表
当一个表元素 全部归并之后 剩余的表元素肯定有序 且大于结果表的元素
挨个插入 结果表 后面即可 无需比较
那么剩余的表元素越多 比较的次数越少
显然其中一个表的元素最小值 仍大于 另一个表的最大值
(一个表的表尾元素 和 另一个表的表头元素)
归并默认就是 逐个 比较 表头元素 然后插入到结果表中
这个题选A n次
![](https://img.haomeiwen.com/i7186975/c657e61fa275ab05.png)
*p = L->next
L->next = NULL;
这两步 相等于取下头结点L
![](https://img.haomeiwen.com/i7186975/44cd6da63d3f4746.png)
![](https://img.haomeiwen.com/i7186975/69f82bc0f4fa56c3.png)
头插法
![](https://img.haomeiwen.com/i7186975/3dfbf4b640745612.png)
i = A[0]
不要理解为把 A[0] 存在 i 中
要理解为把 A[0] 存在 i 的个位上
因为 A 中的元素都是 个位 整数
i / 10
可以看做从 0 到 n - 1 的循环变量 (后面有 i = i +10)
A[ i / 10 ] 可以取A数组所有的元素
i % 10 看作取 个位的值 可以理解为当前找到的 最小值
开始时 是 A[0] 的值
第四句 把个位数清为0
第五局 把 新找到的 最小值 添加到 个位
![](https://img.haomeiwen.com/i7186975/ce74439cbc1e7f0e.png)
![](https://img.haomeiwen.com/i7186975/75991d412a98b0d9.png)
![](https://img.haomeiwen.com/i7186975/a084ae33ac2825c0.png)
![](https://img.haomeiwen.com/i7186975/ef964f9c31a96f85.png)
![](https://img.haomeiwen.com/i7186975/3ea9190765f33c41.png)
网友评论