C语言——折半查找法

简介: 折半查找法最全讲解

一、折半查找法的定义

折半查找法又称二叉查找法,这种方法对待查找的列表有两个要求:

1.必须采用顺序存储结构

2.必须按关键字大小有序序列
首先将表中间位置记录的关键字与查找关键字进行比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找失败。

二、折半查找的算法思想

首先将表中间位置记录的关键字与查找关键字进行比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找失败。
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​代码如下:

//二分查找(折半查找)
#include<stdio.h>
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int k = 0;
    scanf("%d", &k);
    int left = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);//数组元素的个数
    int right = sz - 1;
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] > k)
        {
           right = mid - 1;
            
        }
        else if (arr[mid] < k)
        {
            left = mid + 1;
        }
        else
        {
            printf("找到了,下标是%d\n",mid);
            break;
        }
        if (left > right)
            printf("找不到\n");
    }
    return 0;
}


​

相关文章
|
6月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
64 0
|
算法 C语言
C语言:使用 普通方法 和 二分查找算法(折半查找算法) 在一个有序数组中查找具体的某个数字n-2
第一步: (1). 设置初始数组:int arr[]。 (2). 生成相关变量: int n = 0; -- 存放从键盘输入的要查找的值; int i = 0; -- 循环变量;
|
算法 C语言
C语言-折半查找(二分查找)算法详解
C语言-折半查找(二分查找)算法详解
173 0
|
算法 C语言
C语言:使用 普通方法 和 二分查找算法(折半查找算法) 在一个有序数组中查找具体的某个数字n-1
思路一:普通方法 (逻辑简单,在无序数组中也可以使用,但效率较低,需要逐个查找) 总体思路:
100 0
|
存储 算法 搜索推荐
【C语言初阶】二分查找(折半查找)
目录 二分查找 1.简介 2.例子 3.代码如下 4.总结
92 0
【C语言初阶】二分查找(折半查找)
|
算法 C语言 索引
09【C语言 & 趣味算法】再识:折半查找(二分查找):基本思想、程序流程图及完整代码、附:顺序查找
09【C语言 & 趣味算法】再识:折半查找(二分查找):基本思想、程序流程图及完整代码、附:顺序查找
09【C语言 & 趣味算法】再识:折半查找(二分查找):基本思想、程序流程图及完整代码、附:顺序查找
|
C语言
如何用c语言实现折半查找
如何用c语言实现折半查找
104 1
如何用c语言实现折半查找
|
算法 搜索推荐 C语言
|
C语言
【C】C语言函数二分查找(折半查找)
【C】C语言函数二分查找(折半查找)
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3