有序遞增二維陣列查詢 C 實現

2021-10-04 15:37:43 字數 951 閱讀 8644

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

首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束;如果大於要查詢的數字,剔除這個數字所在的列;如果數字要小於要查詢的數字,剔除這個數字所在行。也就是說如果要查詢的數字不在陣列的右上角,則每一次都在陣列的查詢範圍中剔除一行或者一列,這樣每一步都可以縮小查詢範圍,知道查詢到要查詢的數字或查詢範圍為空。

按照如上思路,**實現如下:

bool matrixfind::find(int *matrix, int rows, int columns, int number)

else if(matrix[row*columns + column] > number)

else

}} return bfound;

}

完整**實現
#include "string.h"

class matrixfind

;matrixfind::matrixfind()

;matrixfind::~matrixfind()

bool matrixfind::find(int *matrix, int rows, int columns, int number)

else if(matrix[row*columns + column] > number)

else

}} return bfound;

}int main()

,,,};

matrixfind omitrixtest;

omitrixtest.find(*array, 4, 3, 8);

return 0;

}

有序二維陣列中查詢

題目 在乙個n n二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。舉例1 2342 3473 4784 589 找6,false 找5,true 分析 找6,從右上角開始 也可以左下角 右...

有序二維陣列的查詢

劍指offer原題,陣列從左到右,從上到下遞增,給定乙個數target找出這個數是否在該有序二維陣列裡面。找到的話返true,否則返回false。題目比較簡單就簡單說說思路,利用二維陣列的特性,我們把陣列看做乙個矩陣,從矩陣的右上角元素a i,j 開始找,如果a i,j target,則target...

在查詢有序二維陣列中查詢元素

解題思路 實現 public class sortedmatrixelementfinder return true private static class sortedmatrix public void excludethisrow public boolean islegalindex pu...