标签:
剑指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 }
标签:
原文地址:http://www.cnblogs.com/xsfelvis/p/4394605.html