/*给定一个排序数组和一个目标值,在数组中找到目标值,
并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置
。
输入: nums = [1,3,5,6], target = 5
输出: 2
输入: nums = [1,3,5,6], target = 2
输出: 1
输入: nums = [1,3,5,6], target = 7
输出: 4*/
#include<stdio.h>
#include<malloc.h>
int main(){
int n,s=-1,m,i,j,b=0,t1,t2,g,mid;
scanf("%d",&n);
int *p;
p=(int *)malloc(sizeof(int)*(n+1));
for(i=0;i<n;i++){
scanf("%d",&p[i]);
}
scanf("%d",&m);
for(i=0,j=n-1;i<j;){
mid=(i+j)/2;
if(m<p[mid]){
j=mid-1;
}
if(m>p[mid]){
i=mid+1;
}
else if(m==p[mid]){
s=mid;
b=1;
break;
}
}
printf("%d\n",s);
if(b==0){
if(m>p[n-1]){
p[n]=m;
}
for(i=0;i<n;i++){
if(m<p[i]){
t1=p[i];
p[i]=m;
}
for(j=i+1;j<=n;j++){
if(t1>p[j]){
t2=t1;
t1=p[j];
p[j]=t2;
}
}
break;
}
}
for(i=0;i<n+1;i++){
printf("%d",p[i]);
}
printf("\n");
for(i=0,j=n;i<=j;){
int mid=(i+j)/2;
if(m<p[mid]){
j=mid-1;
}
if(m>p[mid]){
i=mid+1;
}
else if(m==p[mid]){
g=mid;
break;
}
}
printf("%d\n",g);
return 0;
}
我这个代码里包含一个插入排序,做的可能有点麻烦。