《算法基础》——3.4 有序链表

简介:

本节书摘来自华章计算机《算法基础》一书中的第3章,第3.4节,作者:(美)罗德·斯蒂芬斯(Rod Stephens)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.4 有序链表

有时,让链表中的项保持有序是十分方便的。当将一个新项加入有序链表时,需要搜索链表来找到该项所属位置,并更新相应的链接来插入该项。
下面的伪代码显示了在一个有序链表中插入一个项的算法:
screenshot

在最坏的情况下,该算法可能需要遍历整个链表为新项找到正确的位置。因此,如果该链表保存N个单元格,其运行时间为O(N)。虽然不能提高理论运行时间,但是可以通过添加底端哨兵使算法更简单而且在实际运行中更加快速。如果将底部哨兵的Value设定成一个比单元格中任意可能存储的Value值都大的值,就可以删除对top.Next!=null的测试。可以这样做是因为这个代码最终会为新的单元格找到一个合适的位置,即使该位置就在底部哨兵之前。
例如,如果单元格中的Value为使用ASCII字符表示的名字,可以设置底部哨兵的Value为“~”因为“~”字符在所有可用的字符中排名最后。如果单元格的Value为整数,就可以以最大可能的整数值来设置底部哨兵的Value。 (在大多数的32位系统中,该值为2 147 483 647。)
下面的伪代码显示了修改后的算法,并假设链表具有一个拥有最大值的底部哨兵:
screenshot

相关文章
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
204 0
Leetcode第21题(合并两个有序链表)
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
278 1
|
算法 索引
❤️算法笔记❤️-(每日一刷-141、环形链表)
❤️算法笔记❤️-(每日一刷-141、环形链表)
185 0
|
算法
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
180 0
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
167 0
|
存储 算法
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
333 0
|
10月前
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
405 30
|
8月前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
164 0
|
10月前
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
513 25
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!

热门文章

最新文章