面试题3:二维数组查找
1 bool Find(const int *matrix, int rows, int columns, int number) 2 { 3 int key; 4 int indexRow; 5 int indexCol; 6 7 /*合法性检查*/ 8 if((NULL == matrix)||(rows <= 0)||(columns <=0)) 9 { 10 return false; 11 } 12 13 /*提升性能,直接和最大最小值比较*/ 14 if((number < matrix[0])||(number > matrix[rows*columns-1])) 15 { 16 return false; 17 } 18 19 indexRow = 0; 20 indexCol = columns - 1; 21 22 /*核心代码*/ 23 while((indexRow < rows)&&(indexCol >= 0)) 24 { 25 key = matrix[indexRow*columns + indexCol]; 26 if(key > number) 27 { 28 indexCol--; 29 } 30 else if(key < number) 31 { 32 indexRow++; 33 } 34 else 35 { 36 return true; 37 } 38 } 39 40 return false; 41 }