標籤:

二維數組中的查找

二維數組中的查找

在一個二維數組中,每一行都按照從左到右遞增,每一列從上到下遞增。

請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否有該整數。

思路:

沿著對角線,以左下角為例子。如果目標整數大於當前值,則說明目標整數在該列右側。

如果目標整數小於當前值,則說明目標整數在該行上側。

如果目標整數等於當前值,則找到。

如果從左下角沿著對角線走到右上角,則說明找不到目標整數。

參考代碼:

#include <stdio.h>#include <stdbool.h>bool findInArr(int* array,int num,int rows,int columns){bool find=false;if(array != NULL && rows>0 && columns>0){int row=rows-1;int col=0;while(col<columns && row>=0){ if(array[row*columns+col] == num) { find = true; break; } if(array[row*columns+col] > num) { --row; }else { ++col; }}}return find;}int main(){int arr[]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};bool find = false;find = findInArr(arr,7,4,4);printf("%d
",find);return 0;}

推薦閱讀:

最高分是多少

TAG:演算法 | 筆試 |