设定整数数组B[m+ 1][n+1]的数据在行、列方向上都按从小到大的顺序排列,且整型变量x中的数据在B中存在。试设计一个算法,找出一对满足B[i][j]-x的i,j值。要求比较次数不超过m十n.
思路:由矩阵存储的特殊性,应选择从右上角(或左下角)作为开始位置,若B[r][c]>x,列减一,B[r][c]<x则行加一,相等时找到
1 ... 2 3 void Find(int x) 4 { 5 int Counter = 0;//统计查找次数 6 int r = 0, c = n-1; // 从右上角开始找 7 while (B[r][c] != x) { 8 if (B[r][c] > x) 9 c--; 10 else 11 r++; 12 Counter++; 13 } 14 cout << Counter << "(" << r << "," << c <<")"<< endl; 15 } 16 17 ...