C语言——二分法查找一个数_数组
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语言——二分法查找一个数_数组相关推荐
- c语言二分法查找一个数_算法竞赛小专题系列(1):二分法、三分法
本系列是这本算法教材的扩展资料:<算法竞赛入门到进阶>. 罗勇军.郭卫斌. 清华大学出版社 二分法和三分法是算法竞赛中常见的算法思路,本文介绍了它们的理论背景.模板代码.典型题目. 1. ...
- c语言二分法查找一个数_算法简解-二分查找
读书不记录=没读,始终是我的信条·····最近因为要参加竞赛,发现自己真的差的很远,所以打算重新开始学习一遍算法及AI的相关数学知识,相信很多人都是闻数学,理工科色变,之前也是觉得上数理课太难了,真的 ...
- C语言二分法查找数组
C语言二分法查找数组 要实现的功能如下 完整源代码实现如下 要实现的功能如下 采用二分法查找,若找到输出:数所在的下标,否则输出sorry 完整源代码实现如下 #include "stdio ...
- java二分法查找法算法_算法二:二分法查找(java语言)
说明: 二分法查找 * 解析: * 一维数组,二分法查找:假如有一组数为1,2,3,4,5,6,7,8,9,10要查给定的值7. * 可设三个变量low,mid,high分别指向数据的前,中间和后,m ...
- 【C++】二分法查找某个数字在数组中的下标
#include<iostream> using namespace std;//利用二分法查找某个数字在数组中的下标 int search(int arr[], int k, int s ...
- C语言 二分法查找与递归二分法查找
1.二分法查找 1.算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序 2.主要思想是: (设查找的数组区间为arraylow, high]) 确定该区间的中间位置K.将查找的值T与array ...
- c语言中的数组二分法排序程序,#C语言#二分法查找有序数组
C语言的二分法,想必很多朋友都在初学时是一个难啃的骨头,因为这是必须掌握的最基础的一种算法.在这里我分享一下这个简单的#二分法#查找有序数组 #include int binary_search(in ...
- c语言二分法查找数组元素,c语言二分法如何实现查找数组元素
c语言二分法实现查找数组元素的方法:1.递归算法,代码为[if(a[mid] == key) return mid]:2.非递归算法,代码为[while( left < right && ...
- C语言二分法查找详解
二分法查找,也称折半法,是一种在有序数组中查找特定元素的搜索算法. 以一个案例来分析,二分法查找的思路如下: (1)首先,确定数组的中间下标mid(这里不用管整不整除,只要比较中间就可以),将mid对 ...
最新文章
- ubuntu 系统下安装 xlwt
- androidHandler讲解
- dr.oracle素颜霜好用吗,treechada素颜霜好用吗_treechada素颜霜评测
- linux下Vim和Terminal配色
- eclipse索引4超出范围_Python内置的4个重要基本数据结构:列表、元组、字典和集合
- 无规则弹窗自动点击插件_vscode 插件会了吧,英语不好的赶紧下载 自动分析源码中的陌生单词、点击朗读单词...
- BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]
- php 连接池 idletime,聊聊hikari连接池的idleTimeout及minimumIdle属性
- 一个用于分布式DNN训练加速的通用通信调度器
- Matlab 的fspecial函数用法
- ipa包瘦身之图片无损压缩瘦身
- 教你如何更改U盘图标
- 软件测试才是系统级别错误,软件测试部BUG级别定义
- short message
- 烤仔星选·newsletter | 简析无常损失(Impermanent Loss)
- Mac下 讲iphone备份到移动硬盘下
- 我承认这样真的很安详 和楼下老爷爷一样
- 本地使用shell脚本批量导入导出镜像文件
- 16款国内外数据治理工具对比
- 高通平台usb充电检测