20杨氏矩阵查找
? ?問題描述:在一個(gè)m行n列二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。
??? 例如下面的二維數(shù)組就是每行、每列都遞增排序。如果在這個(gè)數(shù)組中查找數(shù)字6,則返回true;如果查找數(shù)字5,由于數(shù)組不含有該數(shù)字,則返回false。
??? 解法
??? 定位法,時(shí)間復(fù)雜度O(m+n)。首先直接定位到最右上角的元素,比要找的數(shù)(6)大就往左走,比要找數(shù)(6)的小就往下走,直到找到要找的數(shù)字(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)
轉(zhuǎn)載于:https://www.cnblogs.com/gqtcgq/p/7247167.html
總結(jié)
- 上一篇: 表单-登陆框
- 下一篇: 保存现场数据和状态:onSaveInst