//杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);

要求://杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于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;
//}

猜你喜欢

转载自blog.csdn.net/www_zxf_csdn123/article/details/88370194
今日推荐