二分查找(非要5个字)

简介: 二分查找(非要5个字)

经过上一篇的冒泡排序算法,可以将无序的数组排列整齐,在此基础上,在一个数组里面找一个元素变得方便起来,不用循环遍历数组去找元素了,用二分查找变得简单起来,想必大家都玩过猜数字游戏1~100之间,假如说你说一个数字23,主持人说猜小了,你又说个24,主持人反手就是一个大比兜,这个里面就用到了二分法。

int arr1[10] = { 1,6,9,12,43,56,66,77,81,95 };

给出以上数组,10个元素,假如说要找的数字是81,他的下标是8

假如要找的数字是6,他的下标是1

假如说要找的是7,数组中没有该元素

根据上面图示分析,代码如下

int main()
{
  int a;
  scanf_s("%d", &a);//要查找的数字
  int arr1[10] = { 1,6,9,12,43,56,66,77,81,95 };被查找的数组
  int sz = sizeof(arr1) / sizeof(arr1[0]);求数组长度
  int left = 0;
  int right = sz - 1;
  int mid = (left + right) / 2;
  while (left < right)
  {
    if (a > arr1[mid])//对应第一张图
    {
      left = mid + 1;
      mid = (left + right) / 2;
    }
    else if (a<arr1[mid])//对应第二张图
    {
      right = mid-1;
      mid = (left + right) / 2;
    }
    else if (a == arr1[mid])//对应每张图中最后找到元素的情况
    {
      printf("找到了,下标是%d", mid);
      break;
    }
}
  if (left >= right)//对应最后一张图没找到
  {
    printf("没找到\n");
  }
}

结果展示

对应已经排好序的数组用此方法(二分查找)比较方便,希望可以帮助到大家,如果有不对的地方,请大佬们指教,谢谢大家了

目录
相关文章
|
6月前
面试题 08.08:有重复字符串的排列组合
面试题 08.08:有重复字符串的排列组合
53 0
|
6月前
【错题集-编程题】重排字符串(贪心 + 构造)
【错题集-编程题】重排字符串(贪心 + 构造)
|
6月前
面试题 08.07:无重复字符串的排列组合
面试题 08.07:无重复字符串的排列组合
56 0
|
存储 机器学习/深度学习
二叉树详解一万字(基础版)看着一篇就够了(上))
树的结构是一种非线性的数据结构,它是由n(n>=0)个节点组成的一个有层次的关系集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说他是根朝上,而叶朝下。
140 0
二叉树详解一万字(基础版)看着一篇就够了(下)
对于堆的调整相当于是对数组的一种调整,将数组的首地址传进来,要调整的数组的长度,相当于是退出的循环条件,向下传给进来parent(root),向上传给child(size-1),然后再用一个表示另外一个。将参数传进来之后进行比较,先比较两个孩子,找出小的那个,然后交换较小孩子和双亲节点,在比较左右孩子的时候要保证右孩子也存在才可以进行比较,就是child+1<size,原因就是这里是堆,是完全二叉树
60 0
随机练习题:浅浅固定思路
随机练习题:浅浅固定思路
269 0
|
算法
我就不信你看完还学不会顺序查找和折半查找的算法
我就不信你看完还学不会顺序查找和折半查找的算法
107 0
我就不信你看完还学不会顺序查找和折半查找的算法
|
SQL 存储 关系型数据库
索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!(下)
索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!(下)
索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!(下)
|
存储 关系型数据库 MySQL
索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!(中)
索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!(中)
索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!(中)