唯一要求:二维数组按行列递增
巧妙的利用二分法的特性,先跟右上角的元素相比,大于行+1,小于列-1,否则返回行列
#include<iostream>
using namespace std;
#define M 3
void array_bsearch(int array[][M],int value)
{
int i=0;//行
int j=M-1;//列
while(i<sizeof(array)/M)
while(j>=0)
{
if(value > array[i][j])
{
i+=1;
}
else if(value < array[i][j])
{
j-=1;
}
else
{
cout<<i<<" "<<j<<endl;//输出行列
return;
}
}
cout<<"value不存在"<<endl;
}
void main (void)
{
int array[][M] = {{1,2,3},{4,5,6},{7,8,9}};
array_bsearch(array,1);
}