c++编程题
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。(你可以假设数组中无重复元素)输入:数组的长度:l...
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。(你可以假设数组中无重复元素)
输入:
数组的长度: length
数组: nums
目标值: taeget
输出:
若目标值在数组中,输出其索引值。若不在数组中,输出其待插入的位置。 展开
输入:
数组的长度: length
数组: nums
目标值: taeget
输出:
若目标值在数组中,输出其索引值。若不在数组中,输出其待插入的位置。 展开
展开全部
#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;
}
}
}
满意采纳
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
追问
为啥最后无法输出位置呢?
为啥最后无法输出位置呢?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询