• 查找-顺序表的查找


    相关术语:

      查找表:(Search Table)是由同一类型的数据元素(或记录)构成的集合。

      关键字:(Key)是数据元素中某个数据项的值,又称为键值,它可以标识一个数据元素。

      主关键字:若某个关键字可以唯一地标识一个记录,则称此关键字为主关键字(Primary Key)。这就意味着,对于不同的记录,其主关键字均不相同。主关键字所在的数据项 成为主关键码。

      次关键字:对于那些可以识别多个数据元素(或记录)的关键字,我们称之为次关键字(Second Key)。

      查找:就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或记录。

      静态查找表:只作查找操作的查找表。

      动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。

    顺序表查找:

      

    /*
    这里 a 为一个int型数组的名字,也是数组的头指针int a[n]的形参
    n为数组a[n]中元素的个数
    key 是要查找的关键字
    */
    int SequentialSearch(int *a,int n;int key)
    {
        int i;
        for(i = 0;i < n;i++)
        {
            if(a[i] == key)
                return i;
        }
        return 0;
    }
    

    这里算法复杂度为O(2n),我们可以对它进行优化成:

    int SequentialSearch(int *a,int n;int key)
    {
        int i;
        a[0] = key;
        i = n;
        while(a[i] != key)
        {
            i--;
        }
        return i;
    }
    

    注意:这里我们默认了a[0]存放的不是我们要搜索数据项,所以,可以把它设置成 " 哨兵 " 。

  • 相关阅读:
    LeetCode No961. 在长度 2N 的数组中找出重复 N 次的元素
    LeetCode No468. 验证IP地址
    LeetCode No56. 合并区间
    LeetCode No50. Pow(x, n)
    LeetCode No1021. 删除最外层的括号
    LeetCode No53. 最大子数组和
    LeetCode No52. N皇后 II
    LeetCode No57. 插入区间
    LeetCode No965. 单值二叉树
    LeetCode No48. 旋转图像
  • 原文地址:https://www.cnblogs.com/devinblog/p/4181459.html
Copyright © 2020-2023  润新知