1. 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。请实现一个函数用于判断数组中是含否有指定的数。
int find_in_matrix(int matrix[N][M], int value);
说明:
查找成功时返回1,失败返回0.
实现代码:
#include <stdio.h> #define N 5 #define M 5 int find_in_matrix(int matrix[N][M], int value) { int i = 0, j = M - 1; int ret = 0; if((matrix[0][0] <= value ) && (value <= matrix[N-1][M-1])) { while((i < N) && (j >= 0)) { if(matrix[i][j] == value) { ret = 1; break; } else if(matrix[i][j] < value) { i++; } else if(matrix[i][j] > value) { j--; } } } return ret; } int matix[N][M] = { {1, 2, 5, 7, 9}, {2, 4, 8, 9, 10}, {3, 5, 9, 10, 12}, {4, 7, 19, 20, 23}, {16, 19, 21, 22, 25}, }; int main() { int ret = 0; ret = find_in_matrix(matix, 16); printf("ret = %d ", ret); return 0 ; }
2. 有一个整形数组,其中除了2个数字以外的其他数字都是两两成对出现的,编程找出这2个不成对出现的数字。
函数原型:
void search_diff(int array[], int len, int* pa, int* pb);