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

剑指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                 else
22                         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     else
35         printf("Not Find");
36 
37 }

 

posted @ 2015-04-05 19:27  Android茶话会  阅读(260)  评论(0)    收藏  举报