C语言二维数组中的查找的实例
专注于为中小企业提供网站设计、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业新吴免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
思路描述:一个数字的下方和右方是比它本身大的区域,而左方和上方时比它本身小的区域。选取右上角的数字进行比较,当该数大于指定的数时,舍去该列,当该数小于指定的数时,舍去该行,当相等时,则表示找到
C语言实现:
#include#include typedef unsigned int boolean; #define MAX 4 #define TRUE 1 #define FALSE -1 void 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 15 int 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); }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。