C语言—在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题目//在一个二维数组中每一行都按照从左到右递增的顺序排序每一列都按照从上到下递增的顺序排序。请完成一个函数输入这样的一个二维数组和一个整数判断数组中是否含有该整数。时间复杂度O(rowcol)思路//从右上角开始遍历如果这个数字小于右上角的数则列减1如果大于右上角的数则行加1。#includestdio.h #includewindows.h void find(int a[4][4], int val){ int i 0; //行 int j 3; //列 while (i 3 j 0){ //从右上角开始遍历 if (a[i][j] val){ //val是要找的那个数 i; } else if (a[i][j] val){ j--; } else{ printf(找到了\n); } } printf(未找到\n); } int main(){ int a[4][4] { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } }; find(a, 3); //3可以换成数组中的任意一个数 system(pause); return 0; }运行结果一个val是8一个val是3