C語言二維數組中的查找的實例
題目描述:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數
思路描述:一個數字的下方和右方是比它本身大的區域,而左方和上方時比它本身小的區域。選取右上角的數字進行比較,當該數大于指定的數時,舍去該列,當該數小于指定的數時,舍去該行,當相等時,則表示找到
C語言實現:
#include<stdio.h>#include<stdlib.h>typedef unsigned int boolean;#define MAX 4#define TRUE 1#define FALSE -1void showAry(int ary[MAX][MAX]);boolean find(int ary[MAX][MAX], int rows, int cols, int number);void showAry(int ary[MAX][MAX]) { int i = 0, j = 0; for(; i < MAX; i++) { j = 0; for(; j < MAX; j++) { printf("%d ", ary[i][j]); } }}boolean find(int ary[MAX][MAX], int rows, int cols, int number) { int i = 0, j = cols - 1, n = 0; boolean result = FALSE; if(ary == NULL || rows <= 0 || cols <= 0) { return result; } while(i < rows && j >= 0) { n = ary[i][j]; if(number == n) { printf("/nary[%d, %d] = %d/n", i, j, n); result = TRUE; break; }else if(number < n) { j -= 1; }else if(number > n) { i += 1; } } return result;}//1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15int main() { int ary[MAX][MAX]; int i = 0, j = 0; for(; i < MAX; i++) { j = 0; for(; j < MAX; j++) { scanf("%d", &ary[i][j]); } } showAry(ary); find(ary, MAX, MAX, 7);}
以上就是講解C語言二維數組中的查找的實例,希望能幫助需要同類型問題的朋友,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選