美文网首页
静态查找_顺序查找&二分查找

静态查找_顺序查找&二分查找

作者: Mad_Elliot | 来源:发表于2019-02-25 13:32 被阅读0次

查找基本概念:查询特定元素是否在表中的过程,存在则输出该元素位置,不存在则输出失败标志。
静态查找:只查找,不改变表中数据。
动态查找:既查找,又改变。

顺序查找:(线性查找)

从顺序表的一端开始往后比较,找到返回表中位置,找不到返回-1。

//while循环
static int SeqSearch1(int[] a, int x)
{
    int i = 0;
    while (i < a.Length && a[i] != x)
        i++;
    if (i < a.Length && a[i] == x) return i;
    else return -1;
}
//for循环
static int SeqSearch2(int[] a, int x)
{
    for (int i = 0; i < a.Length; i++)
    {
        if (a[i] == x)
        {
            return i;
        }
    }
    return -1;
}

总结:
1、算法简单,且对顺序结构或链表结构均适用;
2、时间效率:O(n),效率太低。


二分查找:(折半查找)

基本思想:在一个排好序的表中,将要找的key与正中元素相比,若key小,则缩小至前半部内查找;再取其中值比较,每次缩小1/2的范围,直到查找成功或失败为止。

static int BinarySearch(int[] a, int x)
{
    int low = 0;//首坐标
    int high = a.Length - 1;//尾坐标
    int mid;//中坐标
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (a[mid] == x)
            return mid;

        if (a[mid] > x)//x小于中间值,x位于前半段[low, mid-1]中
            high = mid - 1;
        else
            low = mid + 1;
    }
    return -1;
}

总结:
1、查找本身的时间效率很高O(nlog2n),但排序本身是一种费时的运算;
2、二分查找只使用于顺序表,且是有序的顺序表,链表无法实现二分查找
3、二分查找特别使用于那种一经建立就很少改动,而又经常需要查找的线性表。

相关文章

  • 算法(一)查找算法 平衡二叉树,红黑树,B树等

    顺序查找 略 折半查找 折半查找,也称二分查找,在某些情况下,折半查找比顺序查找效率更高(要求静态查找表中数据必须...

  • 数据结构比较(树)

    查找方法:静态查找:1、顺序查找 : O(N)2、二分查找(Binary Search):O(logN)前提:有序...

  • 静态查找_顺序查找&二分查找

    查找基本概念:查询特定元素是否在表中的过程,存在则输出该元素位置,不存在则输出失败标志。静态查找:只查找,不改变表...

  • PHP查找算法

    静态查找 顺序查找 折半查找 递归折半查找

  • 静态查找

    静态查找:只对表进行查找操作,不会动态添加元素。 平均时间复杂度顺序查找:O(n)二分查找:O(logn)插值查找...

  • 查找-->树-->索引(b树 hash)-->数据库优化-->存

    一、查找 静态查找 无序查找:一个个对比O(n) 顺序查找:二分查找法,O(logn)。可通过将查找过程建立二叉判...

  • 查找

    顺序查找 二分查找 插值查找 查找子数组最大和

  • day13

    查找算法 顺序查找 二分查找 差值查找 斐波那契查找 二分查找 前提数组必须是有序的。 升级 Interpolat...

  • 查找

    查找一般要掌握顺序查找、二分查找、哈希表查找和二叉排序树查找。要能够快速准确地写出二分查找的代码。 1. 顺序查找...

  • 查找算法

    参考资料 有序查找 二分查找 循环版 递归版 无序查找 顺序查找

网友评论

      本文标题:静态查找_顺序查找&二分查找

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