简介: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]进行比较,即有如下的条件