美文网首页数据结构
查找 --- 二分查找法

查找 --- 二分查找法

作者: 挽弓如月_80dc | 来源:发表于2019-09-25 19:08 被阅读0次

1. 思想

二分查找(Binary Search),它的前提是线性表中的记录必须是关键码有序(通常从小到大有序),线性表必须采用顺序存储
基本思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区域继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区域继续查找。不断重复以上过程,直到查找成功,或所有查找区域无记录,查找失败为止。

2. 代码

int Binary_search(int *a, int n, int key) {
    int low, height, mid;
    low = 0;
    height = n;
    int k_whiler = 0;
    while (low <= height) {
        k_whiler++;
        printf("第 %d 次查找 \n",k_whiler);
        mid = (low + height)/2;
        if(key < a[mid]) {
            height = mid - 1;
        }else if (key > a[mid]) {
            low = mid + 1;
        } else {
            return mid;
        }
    }
    return 0;
}

#pragma mark - 使用
    int a[] = {0,1,16,24,35,47,59,62,73,88,99};
    int length = sizeof(a)/sizeof(int);
    int search = Binary_search(a, length-1, 88);

3. 推导

1.最好的情况 当然是1次了
2.最坏的情况 相当于求完全二叉树的深度 |log2^N| + 1


转换为完全二叉树

相关文章

  • 二分查找法

    二分查找法 二分查找法(递归)

  • [老实李] 算法初探:二分查找法 Binary Search

    二分查找法主要用来解决查找的问题 1、二分查找法Binary Search (注)对于有序数列才能使用二分查找法。...

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 二分法查找

    二分法基本查找 二分法遍历查找

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 二分查找

    以二分法来提升查找效率 二分法查找到key的合适位置 put get delete 二分查找的查找操作为O(log...

  • 二分查找法

    在有序数组中,查找特定元素的方法有许多种,今天和大家分享的是二分查找法,二分查找法,也可以称为对半查找,折半查找,...

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 16 基本查找算法:二分查找算法

    二分查找算法 原理 二分查找算法也叫折半法查找法,要求待查找的列表必须是按关键字大小有序排列的顺序表。查找过程如下...

网友评论

    本文标题:查找 --- 二分查找法

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