剑指offer面试题3 二维数组中的查找(c)

来源:互联网 发布:oa软件开发 编辑:程序博客网 时间:2024/05/21 01:42

剑指offer面试题三:

 

关键在于这个二维数组比较特殊,都是按照排序后的摆放,因而在查找时可以采取从右上角开始一层层的剥离,节省查找时间

代码如下:

 1 #include<stdio.h> 2 #define True 1 3 #define False 0 4 /** 5 *二维数组找到 6 */ 7 int Findnum(int *matrix,int rows,int colums,int findnum){ 8     int findflag = False; 9         if(matrix!=NULL && rows>0 && colums>0){10             //俩个辅助变量11             int row = 0;12             int colum = colums-1;13             //开始找数字的循环14             while(row<rows && colum>=0){15                 if(matrix[row*colums+colum] == findnum){16                     findflag = True;17                     break;18                 }19                 else  if(matrix[row*colums+colum] > findnum)20                         colum--;21                 else22                         row++;23             }24         }25     return findflag;26 }27 void  main(void){28     int num[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}};29     int flag;30     flag = Findnum((int*)num,4,4,15);31     if(flag){32         printf("Find");33     }34     else35         printf("Not Find");36 37 }

 

0 0