Crush_Y_X 2022-05-29 21:12 采纳率: 66.7%
浏览 15
已结题

用二分法查询数组并输出 优化算法在1s内完成

img

#include <cstdio>
#include <iostream>
#include <algorithm> 

using namespace std;

long Search(long arr[],long target,long size)
{
    long left = 0 , right = size -1;
     
     while(left<=right)
     {
         
          long mid = (left +( right - left))/2;
          if(target < arr[0])
          {
            return -1;
          } 
          if( target == arr[0])
          {
               return arr[0];
          }
          if( target >= arr[right])
          {
               return arr[right];
          }
          if(left != 0 && target < arr[left] && target > arr[left-1])
          {
               return arr[left-1];
          }
          if(right != size-1 && target > arr[right] && target < arr[right+1])
          {
               return arr[right];
          }
          if(arr[mid] < target)
          {
               left = mid+1;
          }
          else if(arr[mid] > target)
          {
               right = mid -1;
          }
          else if(arr[mid] == target)
          {
               return arr[mid];
          }
     }
}

int main(void)
{
    long n , m , t;
    int i ,j = 0;
    cin >> n >> m;
    long a[n] , b[m];
    
    for( i = 0 ; i < n ; i++)
    {
        cin >> a[i];
    }
    sort(&a[0] , &a[n]);//排序 
    
    for( i = 0 ; i < m ; i++)
    {
        scanf("%ld" , &t);
        getchar();
        b[j] = Search( a ,t , n);
        j++;
    }
    
    for( j = 0 ; j < m  ;j++)
    {
        printf("%d\n",b[j] );
    } 
    return 0;
}

超时了改怎么解决啊, 在1000ms解决 ,我超时了1s😭
想要储存二分法查询的返回值到一个数组中 然后一并输出 因为不能接受一个判断值就输出一个
缩短在1s内
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月6日
    • 创建了问题 5月29日

    悬赏问题

    • ¥15 esp32驱动GC9A01循环播放视频
    • ¥15 惠普360g9的最新bios
    • ¥15 配置hadoop时start-all.sh老是启动失败
    • ¥30 这个功能用什么软件发合适?
    • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
    • ¥15 用pytorch实现PPO算法
    • ¥15 关于调制信号的星座图?
    • ¥30 前端传参时,后端接收不到参数
    • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
    • ¥15 机器学习预测遇到的目标函数问题