二分(模糊)查找+插入
#include <iostream>
using namespace std;
int search(int* nums, int numsSize, int target) {
int left=0;int right=numsSize-1;
while(left<=right)
{
int mid=left+(right-left)/2;
if(target==nums[mid]) return mid;
else if(target<nums[mid])
{
right=mid-1;
}
else
{
left=mid+1;
}
}
return left;
}
int main()
{
//原数组为a的前5个数,a的总长度为6
//想插入的值:a[5]
int a[]={1,2,4,5,9,3};
cout<<"插入前的数组:";
for(int i=0;i<6;i++)
cout<<a[i]<<" ";
cout<<endl<<endl;
int loca=search(a,6,a[5]);
cout<<"应改将a[5]插入到下标为"<<loca<<"的地方"<<endl<<endl;
cout<<"插入后的数组:";
//插入过程
int temp=a[5];
for(int s=5;s>loca;s--)
{
a[s]=a[s-1];
}
a[loca]=temp;
for(int i=0;i<6;i++)
cout<<a[i]<<" ";
return 0;
}