(1)定义
一个m*n矩阵,让一个数组a[k],k<m*n,然后把a[k]中的数据填入矩阵中,填充规则为:
1.每一行每一列都严格单调递增
2.如果填充完后,矩阵中仍有空间,则填入∞
(2)插入操作
1.将数据插入所有数字的后面,如将x=20插入,则放在d5位置
2.设左边数据为xl,上边数据为xu
1) 如果 x>xl && x>xu,则现在就是最终位置
2) 否则,x与xl,xu中较大的那个位置交换
(3)删除操作
设右边数据为xr,下边数据为xd
1)如果xr<xd,则x与xr交换
2)如果xd<xr,则x与xd交换
(4)查找操作
类似于二分查找,从右上角数据x开始查找
1) 如果x<find,那么向下找
2) 如果x>find,那么向左找
1) 如果x=find,那么就找到了
public static boolean contains(int[][] a, int find)
{
int rowLen = a[0].length;
int colLen = a.length;
int x = rowLen - 1;
int y = 0;
boolean flag = false;
while (x<rowLen && y<colLen && x>=0 && y>=0)
{
if (a[x][y] == find)
{
flag = true;
break;
}
else if (a[x][y] < find)
{
y = y + 1;
}
else
{
x = x - 1;
}
}
return flag;
}