最近在看<大话数据结构>,这本书真是写的好呀呀呀,关于查找做了些笔记. 一.顺序表查找 1. 顺序查找 也称为线性查找,查找过程基本是从第一个(或最后一个)开始查找,逐个与查找值的关键字对比是否相等,若相等查找成功,若到最后都没有没有相等,则查找失败. 时间. 顺序查找优化:即设定一个哨兵,解决了不用每次都要比较. 时间复杂度:O(N). int SequentialSearch ( int * a , int n , int key ) { a [0] = key ; int i = sizeof ( a )/ sizeof ( int ) - 1; // 因 a[0] =key 设定了是哨兵 ; ,当i==0时, a[0] 与 key 必定相等.这也是哨兵的作用 . while ( a [ i ] != key ) { i --; } return i ; } 二. 有序表查找(查找的数据是有序的) ※ 包括折半, 插值, 斐波那契查找. 1. 折半查找 又称二分查找,前提是查找表是有序的. 时间复杂度:O(logN). 查找过程:(1)在有序表中, 取中间值mid与关键字key进行比较,如果mid与key相等,则查 找成功.如果mid < key, 则(2), 如果mid > key,则(3). (2)取mid的左半端(不包括(1)mid)的中间值,转(1). (3