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

关于快速排列二分法查找的问题,如何解决?

img

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

using namespace std;

int Search(int a[] , int );
int Search(int a[] , int t) 
{    
    int left = 0 , mid;
    int right = sizeof(a) -1;
    while(left <= right)
    {
        mid = (left + right) / 2;
        
        if(a[mid] > t)
        {
            right = mid -1;
        }
        else if( a[mid] < t)
        {
            left = mid +1;
        } 
        else if(a[mid] == t)
        {
            return a[mid]; 
        }
        else if(a[mid] > t and a[mid-1] < t)
        {
            return a[mid-1];
        }
        else
        {
            return -1;
        }
    }
}

int main(void)
{
    int n , m , t;
    int i ,j = 0;
    cin >> n >> m;
    int a[n] , b[m];
    

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


有些数据会得出相近的答案
我是想着先快排 ,然后二分法查找,相等输出,再添加一个判断条件target(也就是t)大于mid-1再小于mid则是在中间可return
想要改进且如何在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 机器学习预测遇到的目标函数问题