2016 - 2024

感恩一路有你

编程实现二分查找算法 C语言中怎样利用折半查找法(二分查找法)找到数列中的一个数?

浏览量:2858 时间:2021-03-13 03:17:43 作者:admin

C语言中怎样利用折半查找法(二分查找法)找到数列中的一个数?

根据要求,使用二分法在指定的数组中找到指定的数字。代码如下:#include<stdio。H>//在长度为len的数组a中查找n,如果找到则返回数组下标,并返回-1intsearch(inta[]intlen,INTN){intindex=-1intleft=0,right=len,mid=(left)}right)/2while(left<=right){if(n==a[mid]){index=midbreak}elseif(n>a[mid]){left=mid 1mid=(left right)/2}else{right=mid-1mid=(left right)/2}returnindex}intmain(){intarray[]={5、8、13、17、23、25、29、50、53}//数组intlength=9//数组长度intaim=17//查找目标//输出搜索结果,search17array[]:3printf(“search%dinarray[:%dn”,aim,search(array,length,aim))return0}

#注意我对代码的评论。请注意,二进制搜索是在升序数组上执行的。。

c语言。利用二分查找法实现一维数组的查找?

#include<stdio.h>

int seek(int*pArr,int low,int high,int num)

void main()

{

int Arr[]={1,2,3,4,5,6,7,8,9,10}

int find,num

printf(“输入要查找的数值。n”)

scanf(“%d”,&num)

find=seek(Arr,0,9,num)

if(find==-1)printf(“num=%d未找到!n“,num)

否则printf(”num已找到!narr[%D]=%Dn,find,arr[find])]}

int seek(int*Parr,int low,int high,int Num)

]{//Parr是数组的名称。数组必须按顺序排列(这是二分法的要求),这里按从小到大的顺序排序

int mid

mid=(低-高)/2

if((低>=高)&(Parr[mid]!=Num))

return-1

]{

]if(Parr[mid]==Num)

return mid

]else if(Parr[mid]>num)

high=mid 1//中间数大于要检查的数,表示它可能在中间段之前

else

Low=mid-1//同上,它可能在中间段之后

return seek(Parr,low,high,Num)//Recursion

}

C语言折半查找法详细代码(假如有10个已排好序的数)?

二进制搜索包含n个元素的有序数组。要分析的比较数可以通过绘制二叉决策树来分析。二叉决策树的高度为[log2(n)]1级,这是二叉搜索的最大比较次数。例如,如果n=1000,则最大比较次数为[log2(1000)]1=9,1=10。如果要计算平均比较次数,则需要分析二叉决策树中的每个节点。第一级比较一次,第二级比较两次,第三级比较三次,以此类推,将每个节点的比较次数相加,然后节点数(元素数)就是平均比较次数。这里,假设搜索是在等概率条件下进行的。例如:有一个由九个元素组成的有序数组,每个元素用1,2,3。。。8, 9. 然后二叉决策树如下:如图所示,如果要查找的元素位于第五个位置,则只需进行一次比较即可找到它。如果找到第九个元素,就需要四个比较。该算法分别比较第五、第七、第八和第九个元素。因此,平均比较次数如下:你能理解这个分析吗?希望能对你有所帮助。

编程实现二分查找算法 折半查找法c语言 二分查找用C语言程序

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。