二维数组的查找问题

来源:互联网 发布:百度地图js api离线 编辑:程序博客网 时间:2024/05/16 13:00
题目:一个二维数组,每一行都按照从左到右递增,每一列都按照从上到下递增,查找一个数是否存在于二维数组中
思路:

代码如下:

#include<stdio.h>//bool Find(int (*p)[5]){}//以前习惯于将二维数组的传递这样写,可是这样并不好,因为[]里无法给变量//学会善于利用一维数组解决 rows:行 columns:列 number:要查找的数bool Find(int *arr,int rows,int columns,int number){     if(*arr == NULL||rows<1||columns<1)     {          return false;     }     int i = 0;     while(i<columns && rows >= 0)     {          int tmp = arr[(rows-2)*(columns-1)+i];          if(tmp == number)          {              return true;          }          else if(tmp < number)          {              i++;          }          else          {              rows -= 1;          } }     return false;}int main(){     int arr[5]={};     int brr[25]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};     printf("%d\n",Find(arr,0,0,0));     printf("%d\n",Find(brr,5,5,8));     printf("%d\n",Find(brr,5,6,8));     printf("%d\n",Find(arr,5,5,14));}
总结:善于寻找规律,发现规律,利用规律。