查找矩阵中某一元素

设定整数数组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 ...
View Code

猜你喜欢

转载自www.cnblogs.com/guoyujiang/p/11830948.html