剑指offer面试题3—二维数组中的查找

题目描述:

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

//二维数组中的查找
# include


bool find(int* matrix, int rows, int columns, int number){
bool found = false;
if (matrix != NULL && rows > 0 && columns > 0){
int row = 0;
int column = columns - 1;
while (row < rows && column >= 0){
if (matrix[row * columns + column] == number){ //先看数组的右上角元素和number的关系
found = true;
break;
}
else if (matrix[row * columns + column] > number)
//删除当前列
--column;
else
//删除当前行
++row;
}
}
return found;
}


int main(){
int matrix[][4] = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } };
bool bb;
bb = find(matrix[0], 4, 4, 7);
if (bb == true)
printf("数组中找到了这个数");
else
printf("数组中没有这个数");
getchar();
return 0;
}

你可能感兴趣的:(剑指offer)