杨氏矩阵-young tableau 算法分析+实现

本文介绍了杨氏矩阵的概念,它结合了堆和BST的优点,适用于高效查找。杨氏矩阵是一个m*n的矩阵,元素按非递减或非递增排列。文章详细阐述了杨氏矩阵的插入、查找和删除操作,插入和查找的时间复杂度均为O(m+n)。删除操作通过调整保持矩阵特性,同样具有高效性。文中还提供了相关代码和测试样例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:young tableau 是一个很奇特的数据结构,它的性质是堆和BST(二叉查找树)的结合,对于查找它的效率优于堆,对于删除和插入它比BST更方便。

young tableau是一个m*n的矩阵,可以用二维数组来表示,定义如下:

1,杨氏矩阵的每一行和每一列的元素都以非递减或者非递增的形式排列。

2,如果矩阵中的某一个位置没有存储元素,则把它的值置为无穷大。

先给出一个一位数组,和它转化成的杨氏矩阵:

int a[] ={1,3,5,7,8,11,4,6,9,14,15,19,10,21,23,33,56,57,34,37,45,55,INF,INF,INF,INF,INF,INF,INF,INF};

同时需要说明的就是:对于同一个数组,将其插入到yang tableau中得到的结果是不唯一的。



接下来分别讲述young tableau 的插入,查找和删除。

插入情况:它的插入过程中需要进行调整,首先将插入的元素放在杨氏矩阵的最后一个位置,或者说横纵坐标索引都是最大值。如果图中的(6,e)的位置。假设插入的元素是x,对应在样式矩阵中的元素是 Y[i][j],则Y[i][j]要和它上面的元素Y[i][j-1]进行比较,同时x要和它坐标的元素Y[i-1][j]进行比较,即有如下的条件࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值