二维数组中的查找
题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 问题分析 应当从具体问题入手,通过分析简单具体的例子,发现普遍的规律。 现在假定,我们要从二维数组 1 7 14 21 3 8 15 22 5 9 16 23 7 17 23 24 中检索是否存在数字7。 按照从 右上方,列优先 的顺序检索该数组。 1. 在检索17的时候,因为21大于17,故可剔除第四列。 2. 在检索14的时候,因为14小于17,故可剔除第一行,相当于更新行号和列号后重新执行而已。则剩下 3 8 15 5 9 16 7 17 23 3. 在检索15的时候,因为15小于17,故可剔除第一行,只剩下 5 9 16 7 17 23 4. 在检索16的时候,因为16小于17,故可剔除第一行,只剩下 7 17 23 5. 在检索到23的时候,因为23大于17,故可剔除第三列,只剩下 7 17 6. 检索到17,返回。 代码实现如下: #include <stdio.h> #define M 4 #define N 4 int FindNumber(int array[M][N],int rows,int columns