一.題目:
在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的二維數組和一個整數,判斷數組中是否含有該整數。
二.分析:
1.可以從左下角或者右上角進行查詢,這樣可以保證每一次查詢排除一行或者一列。
2.設計完算法,一定要準備測試用例,走一遍,才能確保正確。
(1)功能測試
(2)特殊輸入測試
三.答案:
bool arrayarray_search(int* table, int row, int col, int val) {
int i = row - 1, j = 0;
while (i >= 0 && j < col) {
if (table[i * col + j] > val) {
i--;
} else if (table[i * col + j] < val) {
j++;
} else {
return true;
}
}
return false;
}