杨氏矩阵查找
#include <stdio.h>
void young_tableau_search(int (*arr)[3], int key, int *r, int *c)
{
int x = 0;
int y = *c - 1;
while (x < *r && y >= 0)
{
if (arr[x][y] > key)
{
y--;
}
else if (arr[x][y] < key)
{
x++;
}
else
{
*r = x;
*c = y;
return;
}
}
*r = -1;
*c = -1;
}
int main()
{
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int r = 3;
int c = 3;
int k = 7;
young_tableau_search(arr, k, &r, &c);
if (r == -1 && c == -1)
{
printf("cannot find element:%d", k);
}
else
{
printf("find the element:%d at (%d,%d)", k, r, c);
}
return 0;
}