查找是数据处理领域中的一个重要内容,查找的效率将直接影响到数据处理的效率。
所谓查找是指在一个给定的数据结构中查找某个指定的元素。通常,根据不同的数据结构,应采用不同的查找方法。
1.7.1 顺序查找
1.7.2 二分法查找
1.7.1 顺序查找
顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法如下:
从线性表的第一个元素开始,依次将线性表中的元素被查元素进行比较,若相等则表示找到(即查找成功);若线性表中所有的元素都与被查元素进行比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。
在进行顺序查找过程中,如果线性表中第一个元素是被查找元素,则只需要做一次比较就查成功,查找效率最高;但如果被查找的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有的元素进行比较,这是顺序查找的最坏情况。在平均情况下,利用顺序查找法在线性表中查找一个元素,大约要与线性表中一半的元素进行比较。
由此可以看出,对于大的线性表来说,顺序查找的效率是很低的。虽然顺序查找的效率不高,但在下列两种情况下也只能采用顺序查找:
如果线性表为无序(即表中元素的排列是无序的),则不管是顺序存储结构还是链式存储结构,都只能用顺序查找。
即使是有序线性表,如果采用链式存储 结构,也只能用顺序查找。
1.7.2 二分法查找 
二分查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。
设有序线性表的长度为 n ,被查元素为 x ,则对分查找的方法如下:
将与线性表的中间项进行比较:
若中间项的值等于 x ,则说明查到,查找结束。
若 x 小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;
若 x 大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找;
这个过程一直进行到查找成功或子表长度为 0 (说明线性表中没有这个元素)为止。
显然,当有序线性表为顺序存储时才采用二分法查找,并且,二分查找的效率要比顺序查找高得多。可以证明,对于长度为 n 的有序线性表,在最坏情况下,二分查找只需要比较 log 2 n 次,而顺序查找需要比较 n 次。