zoukankan      html  css  js  c++  java
  • 查找

    查找

    顺序查找

    • 顺序查找的基本思想:

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

    例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;
    }
  • 相关阅读:
    Longest Common Prefix
    Roman to Integer
    Intger to Roman
    Container With Most Water
    Regular Expression Matching
    atoi
    Rotate List
    54. Search a 2D Matrix && Climbing Stairs (Easy)
    53. Minimum Window Substring
    52. Sort Colors && Combinations
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/4925446.html
Copyright © 2011-2022 走看看