```
bool Yang_search(int arr[][4], int N, int k)
{
if (karr[N - 1][N- 1])
{
cout << "此值必不在此数组内" << endl;
return false;
}
// 从左下角元素查起
int col = 0;// 列
int row=N-1;// 行
while (row>=0&&col<=N-1)
{
if (k < arr[row][col])
row--;
else if (k > arr[row][col])
col++;
else
{
cout << "找到此值,在第" << row+1 << "行" << col+1 << "列" << endl;
return true;
}
}
if (row<0 || col>N - 1)
{
cout << "查无此值" << endl;
}
return false;
}
int main()
{
int arry[4][4]= {{ 1,5,7,9 },{ 4,6,10,15 },{ 8,11,12,19 },{ 14,16,18,21 }};
Yang_search(arry, 4, 13);
system("pause");
return 0;
}
亲测有效。最坏情况为要查找的值在右上角,查找次数为4+4,即m+n;