题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该整数。
1 #include <stdio.h> 2 #include<stdbool.h> 3 int main() 4 { 5 int find(int matrix[4][4], int rows, int columns, int number); 6 int a[4][4] = {{ 1, 2, 8, 9 }, 7 { 2, 4, 9, 12 }, 8 { 4, 7, 10, 13 }, 9 { 6, 8, 11, 15 } }; 10 int result = find(a, 4, 4, 12); 11 if (result == 1) 12 printf("已经查到\n"); 13 else 14 printf("数组中没有此元素\n"); 15 return 0; 16 } 17 int find(int matrix[4][4], int rows, int columns, int number) 18 { 19 bool found = false; 20 if (matrix != NULL && rows>0 && columns>0) 21 { 22 int a = 0; 23 int b = columns - 1; 24 while (a<rows && b >= 0) 25 { 26 if (matrix[a][b] == number) 27 { 28 found = true; 29 break; 30 } 31 else if (matrix[a][b]> number) 32 --b; 33 else 34 ++a; 35 } 36 } 37 return found; 38 }
时间: 2024-11-05 22:58:51