#include <iostream>
using namespace std;
int test03(int arr[],int length,int target)
{
int left = 0;
int right = length - 1;
int mid = 0;
int t;
while (left <= right) // 当左右两个哨兵交叉后,即left>right时终止
{
mid = (left + right) / 2; // 获取中间位置,如果有两个则选左边位置
if (arr[mid] == target) // 找到目标值,直接返回下标
t = mid;
else if (arr[mid] < target) // 目标值在右边段
{
left = mid + 1;
t = mid;
}
else if (arr[mid] > target) // 目标值在左边段
{
right = mid - 1;
t = mid;
}
}
return t;
}
int main()
{
int arr[]={1,2,3,3,4,5,6,6,7,8,8,8,9};
int length=sizeof(arr) / sizeof(arr[0]);
int targrt=6;
cout<<"数组中某个数最左侧的位置为:"<<test03()<<endl;
return 0;
}
尾注
留下笔记,只为方便回忆,如有侵权,还请联系,如有错误,恳请纠正。