未排序链表中最快的搜索算法是什么
What is the fastest searching algorithm in unsorted linked list
目前正在对未排序的链表使用线性搜索。只是想有没有更快的方法来搜索未排序链表的算法。
当你有未排序的数据并且你想从这个未排序的集合中获取一个项目时,你可以应用以下技术以更快的方式获取项目:
制作一个平衡二叉搜索树(即红黑树)并遍历树,这会给你 O(N * log(N))
其中 O(N) 遍历未排序的 N 项- 数据收集,以及用于插入和搜索数据的 O(logN)。
对数据集合进行排序(使用快速排序或合并排序技术)并对排序后的数据应用二分搜索,这将再次给您带来 O(N * log(N))
的复杂性。
你可以想出一些其他的技术,比如类似堆的数据结构,这也会给你带来 O(N * log(N))
的复杂性。
只有当你的未排序集合中有唯一项时,你才能通过创建类似 HashSet 的数据结构和 return O(N) 中的键值来提出 O(N) 解决方案(1) 时间.
目前正在对未排序的链表使用线性搜索。只是想有没有更快的方法来搜索未排序链表的算法。
当你有未排序的数据并且你想从这个未排序的集合中获取一个项目时,你可以应用以下技术以更快的方式获取项目:
制作一个平衡二叉搜索树(即红黑树)并遍历树,这会给你
O(N * log(N))
其中 O(N) 遍历未排序的 N 项- 数据收集,以及用于插入和搜索数据的 O(logN)。对数据集合进行排序(使用快速排序或合并排序技术)并对排序后的数据应用二分搜索,这将再次给您带来
O(N * log(N))
的复杂性。你可以想出一些其他的技术,比如类似堆的数据结构,这也会给你带来
O(N * log(N))
的复杂性。只有当你的未排序集合中有唯一项时,你才能通过创建类似 HashSet 的数据结构和 return O(N) 中的键值来提出 O(N) 解决方案(1) 时间.