杨氏矩阵

                 (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;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值