2016 - 2024

感恩一路有你

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

浏览量:2244 时间:2021-03-10 18:01:36 作者:admin

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

#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("input a num to be found.n")

scanf("%d",&num)

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

if (find == -1) printf("num=%d not found!n",num)

else printf("num has been found!nArr[%d] = %dn",find,Arr[find])

}

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

{//pArr 为数组名,该数组必须是排好序了(这是二分法的要求),这里按从小到大排序

int mid

mid = (low high)/2

if ((low>=high)&&(pArr[mid]!=num))

return -1

else

{

if (pArr[mid]==num)

return mid

else if (pArr[mid]>num)

high = mid 1//中间数字比要查的数还大,说明可能在中间段以前

else

low = mid-1//同上,可能在中间段以后

return seek(pArr,low,high,num) //递归

}

}

C语言中的“折半查找法”是什么?

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。 例如排序后的数据是1 5 12 35 64 78 89 123 456 你要查找12,首先用12跟上面排好顺序的9个数中间那个比较(64),12<64,因此你查找的数据在前半部分,即1 5 12 35 64,再用12跟前半部分中间那个数比较(12),这样找了2次就找到了 折半查找的目的是提高查找的效率!

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//查找目标//输出查找结果,Search17inarray[]:3printf("Search%dinarray[]:%dn",aim,search(array,length,aim))return0}

c语言数组的折半查找法 c语言二分查找程序代码 折半查找次数怎么求

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