杨氏矩阵

发布于:2023-09-16 ⋅ 阅读:(76) ⋅ 点赞:(0)

 我们来分析一下:我们可以找特殊点,比如 5 或者 11

5是一行里面最大的,一列里面最小的

11是一行里面最小的,一列里面最大的

5:当我们要找的数比5大时,这一行肯定没有比5大的,所以我们就要让行+1,

当我们要找的数比5小时,肯定在这一行里面,所以我们让列-1

 

void Seek(int arr[3][5], int k)
{
	int x = 0;
	int y = 4;//这里就是把坐标指向5
	while (x <= 2 && y >= 0)
	{
		if (arr[x][y] > k)//如果比要找的数大,列就-1
		{
			y--;
		}
		else if (arr[x][y] < k)//如果必要找的数小,行就+1
		{
			x++;
		}
		else
		{
			printf("找到了\n");
			break;//找到了就跳出循环
		}
	}
	if (x > 2 || y < 0)//到这我们不知道是循环结束了还是break跳出来的,所以加个if判断
	printf("找不到\n");
}
int main()
{
	int arr[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };
	int k = 14;//我们这里直接写出来,也可以搞一个scanf,都一样
	Seek(arr, k);
	return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到