多语言展示
当前在线:472今日阅读:84今日分享:32

详解如何在一条单向链表上实现插入排序

题目:给定一条单向无环链表,实现一个算法,通过插入排序对该链表进行排序。注意:算法需要实现原地排序,即空间复杂度为 O(1)。
工具/原料
1

Eclipse

2

JDK1.8

方法/步骤
1

实现一个表示链表节点的静态内部类,通过该类对象可以构建一条单向的链表结构。

2

实现算法,步骤如下:1. 创建一个虚拟头节点,链接在参数链表头节点前面;2. 声明一个指针 prev,代表前一个节点,默认指向原头节点;3. 声明一个指针 current,代表当前节点,默认指向原头节点的后一个节点;4. 如果 current 的值大于等于 prev ,则两个指针均向后跳一步,继续循环;5. 如果 current 的值小于 prev,则首先断链,将 current 节点拿出来,然后从虚拟头节点(作为前驱节点)开始获取其排序后的位置,并插入,继续循环处理下一个节点,直到链表节点处理完毕。

3

编写一个工具函数,可在控制台打印一条链表结构,用于辅助本地测试。

4

编写本地测试主方法。

5

运行本地测试主方法,观察控制台输出,符合预期,本地测试通过。

6

平台提交算法,测试通过。

注意事项

因为是单向链表,所以对于待排序的节点,每次均需要从头开始遍历获取其合适的位置。

推荐信息