当前位置:首页 > 代码 > 正文

折半查找程序代码(c程序折半查找法)

admin 发布:2022-12-19 22:57 132


本篇文章给大家谈谈折半查找程序代码,以及c程序折半查找法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用C++语言编写折半查找算法的程序

#includeiostream

#includecstdlib

using namespace std;

int binary_search(int arr[], int len, int val){

int low = 0, high = len - 1, mid = 0;

while (low = high){

mid = (low + high) / 2;

if (val == arr[mid])

return mid;

if (val  arr[mid])

low = mid + 1;

else

high = mid - 1;

}

return -1;//查找失败

}

void prtArr(int arr[], int len){

for (int i = 0; i  len; i++)

cout  arr[i]  " ";

cout  endl;

}

int main(){

unsigned int ARRLEN = 0;

int val = 0;

int arr[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

ARRLEN = sizeof(arr) / sizeof(unsigned int);

prtArr(arr, ARRLEN);

cout  "输入要查找的数:"; cin  val;

int ret = binary_search(arr, ARRLEN, val);

if (ret == -1)

cout  "未找到该数"  endl;

else

cout  "该数为数组的第"  ret  "个元素"  endl;

system("pause");

return 0;

}

执行结果:

折半查找 用c编写一个折半查找的程序

C语言代码

int BinSearch(SeqList * R, int n , KeyType K )

{ //在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1

int low=0,high=n-1,mid; //置当前查找区间上、下界的初值

if(R[low].key==K)

{

return low ;

}

if(R[high].key==k) return high;

while(low=high)

{ //当前查找区间R[low..high]非空

mid=low+((high-low)/2);//使用 (low + high) / 2 会有整数溢出的问题(问题会出现在当low + high的结果大于表达式结果类型所能表示的最大值时,这样,产生溢出后再/2是不会产生正确结果的,而low+((high-low)/2)不存在这个问题

if(R[mid].key==K)

{

return mid; //查找成功返回

}

if(R[mid].keyK)

high=mid-1; //继续在R[low..mid-1]中查找

else

low=mid+1; //继续在R[mid+1..high]中查找

}

if(lowhigh)

return -1; //当lowhigh时表示查找区间为空,查找失败

} //BinSeareh

c语言编程实现“折半查找”的过程。

折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。参考程序,希望对你有所帮助!

#includestdio.h

void main()

{

int a[20],x,i,start,end;

printf("input 20 numbers:\n");

for(i=0;i20;i++) scanf("%d",a[i]);

printf("please enter the number:\n");

scanf("%d",x);

for(start=0,end=19;start=end;)

{

i=start+(end-start)/2;

if (x==a[i])

{

printf("%d",i+1);

getch();

return;

}

else if (xa[i]) end = i-1;

else start=i+1;

}

}

C语言程序编写——折半查找法

#includestdio.h

int main()

{int a[16]={15,14,13,12,11,10,9,8,7,6,5,4,3,1,0};

 int l=0,r=15,mid,x;

 scanf("%d",x);

 do

 {mid=(l+r)/2;

  if(a[mid]==x)break;

  if(xa[mid])r=mid-1;

    else l=mid+1;

 }while(l=r);

 if(a[mid]==x)

   printf("a[%d]=%d\n",mid,x);

 else

   printf("无此数\n");  

 return 0;    

}

关于折半查找程序代码和c程序折半查找法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/28874.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载