c++编程题

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。(你可以假设数组中无重复元素)输入:数组的长度:l... 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。(你可以假设数组中无重复元素)
输入:
数组的长度: length
数组: nums
目标值: taeget

输出:
若目标值在数组中,输出其索引值。若不在数组中,输出其待插入的位置。
展开
 我来答
百度网友3cffda32a1
2018-11-16 · TA获得超过2016个赞
知道大有可为答主
回答量:1860
采纳率:83%
帮助的人:1062万
展开全部
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
for(int length;cin>>length;){
int nums[length+1],target,flag=0;
for(int i=0;i<length;i++)
cin>>nums[i];
cin>>target;
for(int i=0;i<length;i++)
if(target==nums[i]) {cout<<i+1<<endl<<endl;flag++;}
if(!flag){
nums[length]=target;
sort(nums,nums+length+1);
for(int i=0;i<length+1;i++)
if(target==nums[i]) cout<<i+1<<endl<<endl;
}
}
}

满意采纳

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丿艾瑞灬莉娅
2018-11-15 · TA获得超过916个赞
知道小有建树答主
回答量:926
采纳率:78%
帮助的人:419万
展开全部
#include <iostream>
using namespace std;

int BinarySearch(int *a, int n, int target)
{
    int low = 0, high = n-1;
    while( low <= high ){
        int mid = (low+high) / 2;
        if( a[mid] < target ){
            low  = mid + 1;    
        }else if( a[mid] > target ){
            high = mid - 1;
        }else{
            return mid;
        }
    }
    return low;    
}

int main()
{
    int length, target;
    cin >> length;
    
    int *a = new int[length];
    for(int i = 0; i < length; ++i)
        cin >> a[i];
    cin >> target;
    
    int index = BinarySearch(a, length, target);
    cout << index << endl;    

    return 0;
}
追问
为啥最后无法输出位置呢?
为啥最后无法输出位置呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式