1. 程式人生 > >矩陣找數--一個m*n的矩陣,從左到右從上到下都是遞增的,給一個數x,判斷x是否在矩陣中。要求效率儘可能的高。

矩陣找數--一個m*n的矩陣,從左到右從上到下都是遞增的,給一個數x,判斷x是否在矩陣中。要求效率儘可能的高。

這裡寫圖片描述
思路一:迴圈找
效率差

思路二:
因為從左到右從上到下都是遞增的。
所以用數字和右上角的數字比較
如果要找的數字是7,則數字先與9比。比9小說明在9的左側。
再與8比,比8小,說明在8的左側。
與2比,比2大,在2的下側。
比4大,在4的下側。

bool Find(int * arr,int row,int col,int num)
{
     bool isFound = false;

     if(arr != NULL && row > 0&&col > 0)
     {
          int CurRow = 0
; int CurCol = col-1; while(row < CurRow && CurCol >= 0) { //如果找到了,直接返回 if(arr[CurRow * col + CurCol] == num) { isFound = true; break; } //如果右上角數字大於num,在右上角數字的左邊
else if(arr[CurRow * col + CurCol] > num) --CurCol; //否則在下面 else ++CurRow; } } return isFound; }