查找

查找

顺序查找

  • 顺序查找的基本思想:

从序列的首元素开始,逐个元素与待查找的关键字进行比较,直到找到相等的。若整个序列中没有与待查找关键字相等的元素,就是查找不成功。

例9-14顺序查找函数模板

template <class T>
int seqSearch(const T list[], int n, const T &key) {
    for(int i = 0; i < n; i++)
        if (list[i] == key)
            return i;            
    return -1;                 
}

折半查找(二分法查找)算法

  • 对于已按关键字排序的序列,经过一次比较,可将序列分割成两部分,然后只在有可能包含待查元素的一部分中继续查找,并根据试探结果继续分割,逐步缩小查找范围,直至找到或找不到为止。

折半查找算法示例

  • 用折半查找法,在下列序列中查找值为21的元素:

  • 用折半查找法,在下列序列中查找值为20的元素:

例9-15 折半查找函数模板

template <class T>
int binSearch(const T list[], int n, const T &key) {
    int low = 0;
    int high = n - 1;
    while (low <= high) {   
        int mid = (low + high) / 2;
        if (key == list[mid])    
            return mid; 
        else if (key < list[mid])
            high = mid – 1;
        else
            low = mid + 1;
    }
    return -1;
}

 

posted on 2015-10-31 13:43  让编程成为一种习惯  阅读(184)  评论(0编辑  收藏  举报