C语言——二分法查找一个数_数组

问题描述:

针对一个按顺序排列的一维数组,用户输入一个数,如何辨别它是否存在?是数组中的第几位?

编程思想:

采用二分法,以最中间的数和用户输入的数进行比较,逐步缩小所求数在数组中的区间,直至匹配,或得出查无此数的结论。

代码示例:

#include <stdio.h>int main()
{int a[10] = {1, 3, 5, 7, 9, 10, 19, 31, 56, 101};int left, right, lookup, mid;scanf("%d", &lookup);left = 0;right = 9;if(lookup < a[left] || lookup > a[right]){printf("查无此数");return 0;}while(left <= right){mid = (left + right)/2;if (lookup == a[mid]){printf("该数组的第%d个数为所查找数\n", mid + 1);break;}else if (lookup > a[mid]){left = mid + 1;}else{right = mid;}}if(left > right){printf("查无此数\n");}return 0;
}
------------------------------------
解法2
------------------------------------
# include <stdio.h>int main()
{int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int lookup;int w = 0;    //  初始状态我们还没找到这个数printf("请输入您要查询的数:\n");scanf("%d", &lookup);int l = 0; //  数组最小初始序号int r = 10;    //  数组最大初始序号+1,若不如此做那么该数组的最大数就找不到int m;while((m != 0) && (m != 9))  //假设找不到的话,m的最小值为(0 + 1)/2 = 0; m的最大值为(9 + 10)/2 = 9; {m = (l + r)/2;    //  只要偏中间就可if (lookup == a[m]){printf("您要查询的数在队伍内,恭喜!\n");w = 1; //  说明我们找到这个数了break;    //  打破这尴尬的循环}else if (lookup > a[m]) //  这说明要让left = mid;   {l = m;}else{r = m;}}if (w == 0){printf("很遗憾您要找的数不在查询队伍内!\n");}    return 0;
}

C语言——二分法查找一个数_数组相关推荐

  1. c语言二分法查找一个数_算法竞赛小专题系列(1):二分法、三分法

    本系列是这本算法教材的扩展资料:<算法竞赛入门到进阶>. 罗勇军.郭卫斌. 清华大学出版社 二分法和三分法是算法竞赛中常见的算法思路,本文介绍了它们的理论背景.模板代码.典型题目. 1. ...

  2. c语言二分法查找一个数_算法简解-二分查找

    读书不记录=没读,始终是我的信条·····最近因为要参加竞赛,发现自己真的差的很远,所以打算重新开始学习一遍算法及AI的相关数学知识,相信很多人都是闻数学,理工科色变,之前也是觉得上数理课太难了,真的 ...

  3. C语言二分法查找数组

    C语言二分法查找数组 要实现的功能如下 完整源代码实现如下 要实现的功能如下 采用二分法查找,若找到输出:数所在的下标,否则输出sorry 完整源代码实现如下 #include "stdio ...

  4. java二分法查找法算法_算法二:二分法查找(java语言)

    说明: 二分法查找 * 解析: * 一维数组,二分法查找:假如有一组数为1,2,3,4,5,6,7,8,9,10要查给定的值7. * 可设三个变量low,mid,high分别指向数据的前,中间和后,m ...

  5. 【C++】二分法查找某个数字在数组中的下标

    #include<iostream> using namespace std;//利用二分法查找某个数字在数组中的下标 int search(int arr[], int k, int s ...

  6. C语言 二分法查找与递归二分法查找

    1.二分法查找 1.算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序 2.主要思想是: (设查找的数组区间为arraylow, high]) 确定该区间的中间位置K.将查找的值T与array ...

  7. c语言中的数组二分法排序程序,#C语言#二分法查找有序数组

    C语言的二分法,想必很多朋友都在初学时是一个难啃的骨头,因为这是必须掌握的最基础的一种算法.在这里我分享一下这个简单的#二分法#查找有序数组 #include int binary_search(in ...

  8. c语言二分法查找数组元素,c语言二分法如何实现查找数组元素

    c语言二分法实现查找数组元素的方法:1.递归算法,代码为[if(a[mid] == key) return mid]:2.非递归算法,代码为[while( left < right && ...

  9. C语言二分法查找详解

    二分法查找,也称折半法,是一种在有序数组中查找特定元素的搜索算法. 以一个案例来分析,二分法查找的思路如下: (1)首先,确定数组的中间下标mid(这里不用管整不整除,只要比较中间就可以),将mid对 ...

最新文章

  1. ubuntu 系统下安装 xlwt
  2. androidHandler讲解
  3. dr.oracle素颜霜好用吗,treechada素颜霜好用吗_treechada素颜霜评测
  4. linux下Vim和Terminal配色
  5. eclipse索引4超出范围_Python内置的4个重要基本数据结构:列表、元组、字典和集合
  6. 无规则弹窗自动点击插件_vscode 插件会了吧,英语不好的赶紧下载 自动分析源码中的陌生单词、点击朗读单词...
  7. BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]
  8. php 连接池 idletime,聊聊hikari连接池的idleTimeout及minimumIdle属性
  9. 一个用于分布式DNN训练加速的通用通信调度器
  10. Matlab 的fspecial函数用法
  11. ipa包瘦身之图片无损压缩瘦身
  12. 教你如何更改U盘图标
  13. 软件测试才是系统级别错误,软件测试部BUG级别定义
  14. short message
  15. 烤仔星选·newsletter | 简析无常损失(Impermanent Loss)
  16. Mac下 讲iphone备份到移动硬盘下
  17. 我承认这样真的很安详 和楼下老爷爷一样
  18. 本地使用shell脚本批量导入导出镜像文件
  19. 16款国内外数据治理工具对比
  20. 高通平台usb充电检测

热门文章

  1. iOS - UIControl
  2. 云开发听说过没? Compilr 屌爆的在线开发工具 -_-#
  3. 头指针与头结点的异同
  4. 盘点数据科学最流行的29个Python库
  5. 干货:用Python进行数据清洗,这7种方法你一定要掌握
  6. 2018一季度app Top500榜单,谁在抢线上最后的流量?
  7. 安卓平板 python_使用安卓手机或平板对microbit进行编程
  8. python orm_python的orm
  9. 逼自己玩命学了3个多月,整理出了这份549个分支的技术脑图,分享给你
  10. 面向犯罪编程,9名程序员锒铛入狱