xiaoxx0909 2023-02-08 16:38 采纳率: 100%
浏览 31
已结题

#编程#C语言学习#大学生

编程问题:二分查找:一个包括n个有序(升序)元素的整型数组nums和一个目标值target,搜索nums中的target,如果目标值存在就返回下标,否则返回-1。
以下为我大概思路请指导,对于二分查找不熟悉只能理解大概意思w_w

#include<stdio.h>
int main()
{ int nums[n],target,i,k,j,z;
  printf("输入一个数:")
  scanf("%d",&n);
  printf("输入%d个数:");
  for(i=0;i<=n;i++)
  scanf("%d",&nums[i]);
  printf("输入target:")
  scanf("%d",&target);
  if(nums[k]<=target&&nums[n-1]>=target)
  { for(j=0;j>=n/2;j++)
    { if(nums[j]=target)
    return j;}
     }
  if(nums[k]>=target&&nums[0]<=target)
  { for(z=0;z<=n/2;z++)
    { if(nums[z]=target)
       return z;
    }
 else
     ruturn -1;}
  return 0;
}

存在疑问:n是否应默认为常量还是需要用printf()scanf()语句进行说明
但是这样定义数组的时候出现了问题nums[n],其中的n此时还为变量
我不知道该怎么弄了,待解答

  • 写回答

1条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-02-08 16:47
    关注
    • 数组定义放到 输入n 之后就可以了
        int target,i,k,j,z;
        printf("输入一个数:")
        scanf("%d",&n);
        int nums[n]; // 数组定义放到这里
        printf("输入%d个数:");
        for(i=0;i<=n;i++)
            scanf("%d",&nums[i]);
    
    
    • 另外 二分查找, 参考如下:
    /*
       a 待查找的数组
       k 待查找的数
       len  待查找的数组长度 
     */
    int binary_search(int a[], int k, int len)
    {
        int left = 0;
        int right = len - 1;
        while(left <= right)
        {
            int mid = (left + right) / 2;
            if(k < a[mid])
            {
                right = mid - 1;
            }
            else if(k > a[mid])
            {
                left =mid + 1;
            }
            else
            {
                return mid;
            }
        }
        return -1;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 2月8日

悬赏问题

  • ¥80 构建降雨和积水的预测模型
  • ¥15 #Qt Transform setTransform()在鼠标拖动移动视角是一致在原地不动,无法变换视角(细微观察似乎视图有在原地抖动),无法变换视角(细微观察似乎视图有在原地抖动)
  • ¥50 如何利用无人机拍摄的数码照片测量鸟卵的长短径
  • ¥100 github贡献者给与奖励
  • ¥15 使用DS18B20+ESP8266获取温度数据返回-127.00
  • ¥15 odbc代码新增sqlserver数据源
  • ¥15 求一个USB指纹识别的驱动
  • ¥15 wps中工作表与工作表之间怎么汇总信息?
  • ¥50 请教Windows server 2012 R2的DCOM配置问题
  • ¥15 adasis v3中LaneConnectivity