常用查找算法

作者: Shimmer_ | 来源:发表于2021-05-12 23:18 被阅读0次

顺序查找

  • 适合于存储结构为顺序存储或链接存储的线性表。顺序查找也称为线形查找,属于无序查找算法

    public static int orderLookUp(int[] nums,int num){
        for (int i = 0; i < nums.length; i++) {
            if (num==nums[i]) {
                return i;
            }
        }
        return -1;
    }
    
  • 复杂度:O(n)

二分查找

  • 前提:有序,物理连续(能够随机访问)

    public static int halfLookUp(int[] nums, int num) {
        int start = 0;
        int end = nums.length - 1;
        SortAlgorithm.quickSwap(nums, 0, end);
        for (int i = 0; i < nums.length; i++) {
            if (num == nums[i]) {
                return i;
            }
        }
        int mid;
        while (start <= end) {
            mid = (start + end) / 2;
            if (nums[mid] < num) {
                start = mid + 1;
            } else if (nums[mid] > num) {
                end = mid - 1;
            } else {
                return mid;
            }
        }
        return -1;
    }
    
  • 数据已经有序排放在数组中,通过将待查的元素与数组最中间元素进行对比,如果大于中间值,则目标值可能存在于右半部分,否则可能在左半部分,查到为止

二分查找扩展

  • 插值

    基于二分查找算法,将查找点的选择改进为自适应选择,可以提高查找效率。当然,差值查找也属于有序查找。

    注意:对于表长较大,而关键字分布又比较均匀的查找表来说,插值查找算法的平均性能比折半查找要好的多。反之,数组中如果分布非常不均匀,那么插值查找未必是很合适的选择。

    复杂度:O(log2(log2n))

  • 斐波那契

    也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。同样地,斐波那契查找也属于一种有序查找算法

树型查找

  • 二叉查找树是先对待查找的数据进行生成树,确保树的左分支的值小于右分支的值
  • 破坏原有结构

相关文章

  • 子字符串查找(1)

    一、定义 本文主要介绍子字符串查找的各类常用算法,如朴素匹配算法(暴力查找)、KMP算法、BM算法等。各类匹配算法...

  • 常用查找算法

    find(iterator beg, iterator end, value) find算法 查找元素 @para...

  • 常用查找算法

    顺序查找 适合于存储结构为顺序存储或链接存储的线性表。顺序查找也称为线形查找,属于无序查找算法public sta...

  • 常用的 STL 查找算法

    常用的 STL 查找算法 《effective STL》中有句忠告,尽量用算法替代手写循环;查找少不了循环遍历,在...

  • 2019-01-28

    Local Search 常用的local search 算法有 爬山算法, 模拟退火算法, 遗传算法和禁忌查找等...

  • 常见的查找算法

    在我们开发中经常需要查找内容,那么我们如何利用更好的算法去实现查找的内容。下面就介绍几种常用的查找算法。 第一种,...

  • 二分查找--基于python

    简介 二分查找是查找中常用的算法,时间复杂度为O(logn)(时间复杂度用来衡量一个算法查找的时间效率,是最糟糕的...

  • 数据结构与算法——基础篇(六)

    常用10种算法 1、二分查找算法(非递归)——要求有序 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等...

  • 数据结构之kmp算法

    Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串...

  • 四大查找算法

    在Java中,常用的查找算法有以下四种: 顺序查找; 二分查找; 插值查找; 斐波那契查找; 欢迎大家关注我的公众...

网友评论

    本文标题:常用查找算法

    本文链接:https://www.haomeiwen.com/subject/mpgzdltx.html