我开始阅读算法设计手册,在阅读时我遇到了一条我没有得到的线。有人可以请你澄清一下作者的意思吗?该行是:
已排序的链接列表或数组 - 通常是维护已排序的链接列表 除非你试图消除重复,否则不值得这样做,因为我们 不能在这样的数据结构中执行二进制搜索。排序的数组将 当且仅当没有多少插入或删除时才适用。
此行与选择字典的数据结构有关。 我没有得到的一点是,为什么作者说“维护一个已排序的链表通常不值得这样做,除非你试图消除重复,因为我们 不能在这样的数据结构中执行二进制搜索“
根据我的理解,我用Google搜索,看看我们是否可以对已排序的数组进行二进制搜索,并根据我发现的情况进行搜索。所以我不确定。
有人可以帮我理解这个吗?
非常感谢。
答案 0 :(得分:5)
您无法有效地在链表上执行二进制搜索,因为您无法在恒定时间内随机搜索。要找到中点,您必须执行n / 2步(遍历列表)。这增加了很大的开销,使列表不适合二进制搜索数据结构。