杨氏矩阵,二维数组的每行从左到右是递增的,每列从上到下是递增的.
例如:
#define ROWS 3
#define COLS 3
void print_se_arr(int arr[ROWS][COLS])
{
int i = 0;
int j = 0;
for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
printf("%2d ", arr[i][j]);
}
printf("\n");
}
}
void find(int arr[ROWS][COLS], int num)
{
int i = 0;
int rows = 0;
int cols = COLS;
if ((num > arr[ROWS - 1][COLS - 1]) && (num < arr[0][0]))
{
printf("%d不存在", num);
}
else
{
while (1)
{
if (rows >= ROWS || cols < 0)
{
printf("不存在\n");
break;
}
if (num < arr[rows][cols])
{
cols--;
}
else if (num > arr[rows][cols])
{
rows++;
}
else
{
printf("存在\n");
break;
}
}
}
}
int main()
{
int se_arr[ROWS][COLS] = { { 1, 3, 4 }, { 5, 7, 9 }, { 10, 12, 13 } };
int num = 0;
print_se_arr(se_arr);
printf("请输入查找数字:>");
scanf("%d", &num);
find(se_arr, num);
system("pause");
return 0;
}