二維數組(楊氏矩陣)的查找


這是算法導論和劍指offer中的一個編程題,也被經常用作面試題。

題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

例如:下面的二維數組就是每行、每列都遞增排序。如果在這個數組中查找數字7,則返回true;如果查找數字5,則由於數組不含該數字,返回false。

假如現在要判斷在這個二維矩陣中是否包含數字7,則查找步驟如下所示:

   

         (a) 9>7,下次在9的左側查找;        (b) 8>7,下次在8的左側查找;

   

         (c) 2<7,下次在2的下側查找;          (d) 4<7,下次在4的下側查找。

則該算法的代碼可以表述如下:

bool Find(int** matrix, int rows, int columns, int number){
    bool found=false;
    if(matrix!=NULL && rows>0 && columns>0){
        int row=0;
        int column=columns-1;
        while(row<rows && column>=0)){
             if(matrix[row][column]==number){
                 found=true;
                 break;
             }else if(matrix[row][column]>number){
                 --column;
             }else {
                 ++row;
             }
        }  
    }
    return found;
}    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM