【查找】顺序表(线性表)查找

最基本的查找技术。

算法思想

从表中第一个(最后一个)记录开始,逐个进行记录的关键字和给定值比较:

  • 若某个记录的关键字和给定值相等,则查找成功,找到所查记录;
  • 若直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找不成功。

算法实现

function Sequential_Search(a,key){
    var i;
    for(i=0;i< a.length;i++){
        if(a[i]==key){
            return i;
        }
    }
    return n;
}

优化

因为每次循环都要对 i 是否越界(即 i 是否小于等于 n )做判断。
改进:
设置一个哨兵,可以解决不需要每次让 i n 作比较。

function Sequential_Search2(a,key){
    a[a.length] = key; /* 设置a[n]为关键字值,即“哨兵” */

    var i = 0; /* 从头循环数组 */
    while (a[i] != key) {
        i++;
    }
    return i; /* 返回 n 则说明查找失败 */
}

时间复杂度

O(n)

你可能感兴趣的:(数据结构,算法)