1.5查找技术
, c$ R; E! q; H6 E考点9 顺序查找
' q( y& w, D; U2 O- P4 `8 {考试链接:
* k4 r9 |% M4 ] r+ B0 |考点9在笔试考试中考核几率在30%,一般出现选择题中,分值为2分,读者应该具体掌握顺序查找的算法。
- Q7 V$ G; W5 f查找是指在一个给定的数据结构中查找某个指定的元素。从线性表的第一个元素开始,依次将线性表中的元素与被查找的元素相比较,若相等则表示查找成功;若线性表中所有的元素都与被查找元素进行了比较但都不相等,则表示查找失败。
5 w+ {, G/ G# V0 n1 ]8 o在下列两种情况下也只能采用顺序查找: \" _ O: D2 a- {- T6 B) a
(1)如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,只能用顺序查找。 ) v- Q/ B; h; g5 L( | }: `
(2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。
) K: Y m% \7 V; s5 H+ y
$ R8 ^) y* ~! B$ z! x# s8 z考点10 二分法查找 7 C' E" z$ W. ~ a" Y+ f6 }
考试链接:
y" u2 @- w: g" o! B考点10在笔试考试中考核几率为30%,一般出现填空题中,分值为2分,考核比较多查找的比较次数,读者应该具体掌握二分查找法的算法。 6 c: M* ^7 \" H8 w. A" p; |! B |
二分法只适用于顺序存储的,按非递减排列的有序表,其方法如下: ! P; g. Z5 k" B: W- y
设有序线性表的长度为n,被查找的元素为i,
) R" ?6 {# I6 p8 c3 c(1)将i与线性表的中间项进行比较; * a6 d: S5 a2 N; f/ D8 `% H
(2)若i与中间项的值相等,则查找成功; 5 \1 L- x+ }" j) Y7 m% e
(3)若i小于中间项,则在线性表的前半部分以相同的方法查找;
( i' ~, n+ |* A* |! w(4)若i大于中间项,则在线性表的后半部分以相同的方法查找。 6 y8 y7 E# H3 ]2 z! a. h
$ e4 Q" o% w' j. L 疑难解答:二分查找法适用于哪种情况? I) I! n3 ]- ?
二分查找法只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。 ( d- i; ^- r j2 \; K8 L
这个过程一直进行到查找成功或子表长度为0为止。 . ?, e5 L# _; `0 K. e u" }6 ]$ l
对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次。 |