目录
一、杨氏矩阵简单介绍:
二、思路展示:
以左下角元素为特殊点,如果待查找的元素大于它,则排除所在列;如果待查找的元素小于它,则排除所在行,以此找下去,直至找到。
三、代码演示:
#include<stdio.h>
int search(int(*arr)[4], int x, int* row, int* col)
{
int r = *row-1;
int c = 0;
while (r >= 0 && c <= *col-1)
{
if (x < arr[r][c])
{
r--;
}
else if (x > arr[r][c])
{
c++;
}
else
{
*row = r;
*col = c;
return 1;
}
}
return 0;
}
int main()
{
int arr[4][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} };//创建一个整型方阵
int x = 0;
scanf("%d", &x);//输入要查找的数
int row = sizeof(arr) / sizeof(arr[0]);//行
int col = sizeof(arr[0]) / sizeof(arr[0][0]);//列
int ret = search(arr, x, &row, &col);//传参
if (ret == 1)
printf("找到了!位置是第%d行,第%d列\n", row+1, col+1);
else
printf("未找到!\n");
return 0;
}