m0_59833358 2021-11-18 15:02 采纳率: 100%
浏览 35
已结题

要求用c语言编写简单易懂

(1)创建一个非递减序列并使用折半查找的方法查找元素。已知序列中的元素如下:10、23、45、46、51、62、63、74、85、91、100、102.要求:查找算法执行两次,一次查找元素45,查找成功,返回45对应的下标值3;另一次查找失败,在主函数中输出提示信息。可能用到的算法:1.折半查找算法。2.主函数。

  • 写回答

2条回答 默认 最新

  • 关注

    代码如下,二分法封装成函数:

    #include <stdio.h>
    //数组以升序排列时,二分法查找x
    int binSearch(int x, int a[], int n)
    {
        int low, high, mid;
        low = 0;
        high = n-1;
        while(low <= high)
        {
            mid = (low + high) / 2;
            if(x < a[mid])
                high = mid - 1;
            else if(x > a[mid])
                low = mid + 1;
            else
                return mid;
        }
        return -1;
    }
    
    int main()
    {
        int a[12] ={10,23,45,46,51,62,63,74,85,91,100,102};
        int pos;
        int i=0,n;
        //查找两次
        for(i=0;i<2;i++)
        {
            printf("请输入你要查找的数:");
            scanf("%d",&n);
            pos = binSearch(n,a,12);//查找45
            if(pos >= 0)
                printf("%d所在的位置:%d\n",n,pos+1);
            else
                printf("没找到%d\n",n);
        }
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入