回 帖 发 新 帖 刷新版面

主题:基于归并的链表排序猜想

一个待排序(增)的链表,可以按递增的方向把它分成若干段,例如元素排列:
6->11->1->7->3->8->4->5->NULL, 可分段成:
6->11->NULL, 1->7->NULL, 3->8->NULL, 4->5->NULL, 然后组合:
4->5->6->11->NULL, 1->7->NULL, 3->8->NULL.
最后对三段做两次merge()即可. 

这个方法的困难在于如何高效率地把几个段重新组合. 举例,一个最简陋的实现策略:
遍历一次, 每一段只和第一段做组合, 然后归并.

再优化些的:
在遍历中,若当前块不能和数组记录的每个块归并,加入数组;
否则在数组中选一个最合适的块做组合.(问题在于数组的大小怎么定)

回复列表 (共1个回复)

沙发

感觉跟归并差不多,应该是一个数量级的

我觉得不用组合了,直接归并吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册