题目:
在一个二维数组中查找一个数,二维数组的特点是每一行和每一列都是从小到大排列。
思路:
从右上角开始判断,如果target大于它,向下,如果target小于它,向左。
代码:
#include <stdio.h>
#include <iostream>
using namespace std;
//在一个二维数组中查找一个数,二维数组的特点是每一行和每一列都是从小到大排列
//思路:从第一行最后一个数开始和number比较
bool Find(int (*matrix)[3] , 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][column] == number)
{
found = true;
break;
}
else
if(matrix[row][column] > number)
{
column--;
}
else
row++;
}
}
return found;
}
bool Find2(int matrix[][3] , 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][column] == number)
{
found = true;
break;
}
else
if(matrix[row][column] > number)
{
column--;
}
else
row++;
}
}
return found;
}
int main()
{
int matrix[][3]={1,4,7,2,5,8,3,6,9};
cout<<Find(matrix ,3 ,3,10)<<endl;
cout<<Find2(matrix ,3 ,3,10)<<endl;
}