20杨氏矩阵查找
? ?問題描述:在一個m行n列二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
??? 例如下面的二維數組就是每行、每列都遞增排序。如果在這個數組中查找數字6,則返回true;如果查找數字5,由于數組不含有該數字,則返回false。
??? 解法
??? 定位法,時間復雜度O(m+n)。首先直接定位到最右上角的元素,比要找的數(6)大就往左走,比要找數(6)的小就往下走,直到找到要找的數字(6)為止,如下圖所示:
代碼如下:
int findnum(inta[LINE][COL], int num)
{
???????? int i, j;
???????? i = 0;
???????? j = COL - 1;
?
???????? while(i < LINE && j >= 0)
???????? {
????????????????? if(a[i][j] == num)
????????????????????????? return true;
?
????????????????? if(a[i][j] > num)??????? j--;
????????????????? else????????? i++;
???????? }
???????? return false;
}
?
(http://blog.csdn.net/v_july_v/article/details/7085669)
轉載于:https://www.cnblogs.com/gqtcgq/p/7247167.html
總結
- 上一篇: 表单-登陆框
- 下一篇: c/c++与java------之JNI