要求://杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
数组:
1 2 3
2 3 4
3 4 5
1 3 4
2 4 5
4 5 6
1 2 3
4 5 6
7 8 9
杨氏矩阵,是对组合表示理论和舒伯特演算很有用的工具。它提供了一种方便的方式来描述对称和一般线性群的群表示,并研究它们的性质。有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
//int Yang(int arr[ROW][COL], int val)
//{
// int i = 0;
// int j = COL - 1;
// int tmp = arr[i][j];
// while (1)
// {
// if (tmp == val)
// {
// return 1;
// }
// else if (tmp < val && j >= 0)
// {
// tmp = arr[++i][j];
// }
// else if (tmp > val &&j >= 0)
// {
// tmp = arr[i][--j];
// }
// else
// {
// return 0;
// }
// }
//
//}
//
//int main()
//{
// int a[ROW][COL] = { 1, 2, 3, 2, 3, 4, 3, 4, 5 };
// int i = 0;
// int j = 0;
// int num; //
//
// printf("数组为:\n");
// for (i = 0; i < ROW; i++){
// for (j = 0; j < COL; j++)
// {
// printf("%5d", a[i][j]);
// }
// printf("\n");
// }
// printf("Please Enter You Want TO Find Number:");
// scanf_s("%d", &num);
// if (Yang(a, num))
// {
// printf("%d在该数组中\n", num);
// }
// else
// {
// printf("%d不在该数组中\n", num);
// }
// system("pause");
// return 0;
//}