
搜索算法
|
93
搜索算法
表
5
-
1
:顺序搜索的性能
n
/ 个
p
=
1
.
0
p
=
0
.
5
p
=
0
.
25
p
=
0
.
0
4,096 0.0057s 0.0087s 0.0101s 0.0116s
8,192 0.0114s 0.0173s 0.0202s 0.0232s
16,384 0.0229s 0.0347s 0.0405s 0.0464s
32,768 0.0462s 0.0697s 0.0812s 0.0926s
65,536 0.0927s 0.1391s 0.1620s 0.1853s
131,072 0.1860s 0.2786s 0.3245s 0.3705s
5.2 二分搜索
二分搜索
在有序的集合上可以表现出比
顺序查找
更好的性能。它每次将待查询的集合规
模折半,直至找到目标元素,或者发现目标元素不在当前的集合中。
5.2.1 输入 / 输出
二分搜索
的输入是一个有序集合
A
,集合中的每个元素可以通过一个索引值(对于数组
来说就是下标)来访问。所谓一个集合有序,就是给定两个索引值
i
和
j
,当且仅当
i
<
j
时,
A
[
i
] <
A
[
j
]
。假设已经创建了一个数据结构来保存这些元素(或者这些元素的指针)
,
并且能够维护索引值的顺序。
二分搜索
的输出只是
true
或者
false
。
5.2.2 使用环境
在集合有序的情况下,即便是最坏的情况,也只需要集合规模的对数次数的检查。
二分搜索
能够支持不同类型的数据结构。如果集合是静态的,那么可以使用数组来存储
集合。这样能够更方便 ...