做视频的模板下载网站,电商网站网址大全,开发一款软件的费用,wordpress开头1.引入 当我们想要查找在一个数组中某一个特定的数它的下标是什么的时候#xff0c;我们最先想的方法是遍历数组#xff0c;如下#xff1a;
#includestdio.h
#includestring.h
int main()
{
int arr[10]{1,2,3,4,5,6,7,8,9,10};
int key 8;//要找的数是8…1.引入 当我们想要查找在一个数组中某一个特定的数它的下标是什么的时候我们最先想的方法是遍历数组如下
#includestdio.h
#includestring.h
int main()
{
int arr[10]{1,2,3,4,5,6,7,8,9,10};
int key 8;//要找的数是8
for(int i0;i10;i)
{
if(arr[i]key)
{
printf(找到了下标为%d\n,i);
break;
}
}
return 0;
} 但是这种查找方法有一定的局限性因为如果当它数字很大的时候我们便需要一个一个校对对计算机的工作量比较大。 ⽐如我买了⼀双鞋你好奇问我多少钱我说不超过300元。你还是好奇你想知道到底多少我就让你猜你会怎么猜你会1234...这样猜吗显然很慢⼀般你都会猜中间数字⽐如150然后看⼤了还是小了这就是⼆分查找也叫折半查找。 2.折半查找的要求以及其作用
a.所给的数组应该已经按照升序或者降序排列好了。
b.确定被查找范围的左右下标。
c.根据左右下标确定中间元素和要找的元素进行比较。
{找到了就结束}
{找不到依据大小关系确定新的查找范围}
d.根据左右下标确定中间元素的下标。
#include stdio.h
int main()
{int arr[] {1,2,3,4,5,6,7,8,9,10};int left 0;int right sizeof(arr)/sizeof(arr[0])-1;int key 7;//要找的数字int mid 0;//记录中间元素的下标int find 0;while(leftright){mid (leftright)/2;if(arr[mid]key){right mid-1;}else if(arr[mid] key){left mid1;}else{find 1;break;}}if(1 find )printf(找到了,下标是%d\n, mid);elseprintf(找不到\n);
}