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

折半查找源代码(折半查找法代码)

admin 发布:2022-12-19 15:29 100


今天给各位分享折半查找源代码的知识,其中也会对折半查找法代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

c++折半查找法

#includeiostream

using namespace std;

int a[100];

int find1(int l,int r,int x)//递归折半查找

{

int m=(l+r)/2;

if(lr)//查找失败

return -1;

if(x==a[m])//查找成功返回下标

return m;

else if(xa[m])

find1(m+1,r,x);//查找右边

else if(xa[m])

find1(l,m-1,x);//查找左边

}

int main()

{//折半查找,待查找数列必须有序(升序或降序)

int x,n,num;

cinn;//输出n待查找数列长度

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

cina[i];//输入n个数

cinx;//输入查找值

num=find1(0,n,x);//调用折半查找函数(返回下标)

if(num!=-1)//数组下标0~n-1;返回-1查找失败

{

coutx":在数组中的位置 ";

coutnumendl;

}

else

cout"查找失败"endl;

return 0;

}

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

//参考代码如下:

#include stdio.h

int main()

{

int i, j, n, k=0, isFound=0;

int num[15] = {88,86,75,74,61,56,52,43,39,34,31,22,18,16,8}; //测试数组

printf("请输出一个整数:\n");

scanf("%d", n);

i = (int)15/2; //对折位移量

j = (int)15/2; //取数“指针”

while(k2)

{

i = (int)i/2;

if(i == 0) k++; //i==0 即折半到无可再折时,仍有最后一次比较,故以k做计数

//若未相等,计算下一循环指针的位置

if(nnum[j])

j = j + (i + 1);

else if(nnum[j])

j = j - (i + 1);

else

{

isFound = 1;

break; //若找到相等数,标记已找到并退出循环

}

}

//输出结果

if(isFound)

printf("该数是数组中第%d个元素的值\n", j);

else

printf("查无此数!\n");

return 0;

}

C++折半查找 求源代码

#include stdio.h

int search(int low,int high,int n,int num[]);//函数声明

void main()

{

    int i,n,num[20];

    for (i=0;i=19;i++)

    {

        num[i]=i+10;

        printf("%d ",num[i]);

    }

    printf("输入要查找的数:");

    scanf("%d",n);    

    printf("%d\n",search(0,19,n,num));

}

int search(int low,int high,int n,int num[])//折半查找的函数

{

    int mid;

    mid = (low+high)/2;

    if (n==num[mid])

        return mid;

    else if(nnum[mid])

      search(mid+1,high,n,num);

    else

      search(low, mid-1,n,num);

}

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

折半查找即二分查找,思想是:在一组有序的数据中查找一个数据,首先将要查找的数据与这组数中间的值比较,如果要查找的数据比它小,则在左半部分中继续查找;若比中间值大,则在右半部分中继续查找,相等的话就表示已找到,直接返回。

这样,每次查找都可以将查找范围缩小一半,以此达到O(log N)的时间复杂度。

折半查找代码如下:

int bsearchWithoutRecursion(intarray[],int low,int high,int target)

{

    while(low = high)

    {

        int mid = (low + high) / 2;

        

        if(array[mid]  target)

            high = mid - 1;

        else if (array[mid]  target)

            low = mid + 1;

        else

            return mid;

    }

    return -1;

}

折半查找源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于折半查找法代码、折半查找源代码的信息别忘了在本站进行查找喔。

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

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


取消回复欢迎 发表评论:

分享到

温馨提示

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

联系我们反馈

立即下载