初识C语言之二分查找

简介: 初识C语言之二分查找
  • 二分查找是C语言中重要的查找方法之一,对于初学者来说,可能会有一定的思考难度,以及对一些细节的理解不到位,导致无法有效实现二分查找,下面,博主将根据代码以及手写示意图来讲解二分查找及其细节;
#define _CRT_SECURE_NO_WARNINGS 1
利用二分法实现有序数组的查找
#include <stdio.h>
int binary_search(int a[], int k, int sz)//[]一定要加,声明形式变量为数组
{
  int left = 0;
  int right = sz - 1;
  while (left <= right)
  {
    int mid = (left + right) / 2;//每次循环后都要更新mid的值,所以这条语句要加在循环内部;
    if (a[mid] > k)              //这段代码逻辑参考手写示意图
    {
      right = mid - 1;
    }
    else if (a[mid] < k)
    {
      left = mid + 1;
    }
    else
      return mid;
  }
  return -1;
}
int main()
{
  int a [] = {1,2,3,4,5,6,7};
  int sz = sizeof(a) / sizeof(a[0]);//计算数组长度使用的是数组名称/任一数组元素
  int k;
  printf("请输入要查找的数字:\n");
  scanf("%d", &k);
  利用函数得到ret的返回值
  int ret = binary_search(a,k,sz);//ret接受的是该函数的返回值,我想得到下表需要返回下标
  查到了 输出其下标 返回1;
  查不到  输出查不到 返回-1;
  if (-1 == ret)
    printf("查不到\n");
  else
    printf("查到了,下标为:%d\n", ret);
  return 0;
}

目录
相关文章
|
算法 程序员 数据处理
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
152 1
|
存储 算法 搜索推荐
C语言与人生:数组交换和二分查找
C语言与人生:数组交换和二分查找
|
12月前
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法
134 0
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
C语言
C语言----数组----二分查找
C语言----数组----二分查找
79 2
|
C语言
C语言--通过函数实现二分查找
C语言--通过函数实现二分查找
74 0
|
编译器 程序员 C语言
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现
104 4
|
C语言 数据安全/隐私保护
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
92 0
|
算法 C语言
【C语言】二分查找
【C语言】二分查找
|
C语言
C语言——二分查找(在万千之中快速找到你)
C语言——二分查找(在万千之中快速找到你)
97 0