【数据结构】对称矩阵及对称矩阵的压缩存储

对称矩阵:

朝阳网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联

设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 <= i <= N-1 && 0 <= j <= N-1),则矩阵A是对称矩阵。以矩阵的对角线为分隔,分为上三角和下三角。

如下面矩阵:

【数据结构】对称矩阵及对称矩阵的压缩存储

【数据结构】对称矩阵及对称矩阵的压缩存储

【数据结构】对称矩阵及对称矩阵的压缩存储对称矩阵压缩存储时只需要存储i*(i+1)/2个数据。

对称矩阵与压缩矩阵的关系是:

对称矩阵SymmetricMatrix[i][j] =压缩矩阵Array(i*(i+1)/2+j)。

【数据结构】对称矩阵及对称矩阵的压缩存储下面我实现一下对称矩阵存储在压缩矩阵以及将压缩矩阵中的元素还原成对称矩阵打印出来的代码。

代码如下:


#include
using namespace std;
template
class SymmtrixMatrix
{
public:
    SymmtrixMatrix(T* a, size_t size)
        :_a(new T[size*(size+1)/2])
        , _size(size*(size + 1) / 2)
    {
        for (int i = 0; i < size; i++)
        {
            for (int j = 0; j < size; j++)
            {
                if (i >= j)
                {
                    //将对称矩阵转换为压缩矩阵
                    _a[i*(i + 1) / 2+j] = a[i*size+j];
                }
                
            }
        }
    }
//压缩矩阵的访问打印
    void Print(size_t size)
    {
        for (int i = 0; i < size; i++)
        {
            for (int j = 0; j < size; j++)
            {
                int row = i;
                int col = j;
                if (row < col)
                {
                    swap(row, col);
                }
                cout << _a[row*(row + 1)/2 + col] << " ";
            
            }
            cout << endl;
        }
        cout << endl;
    }

private:
    T* _a;
    size_t _size;    //即n,对称矩阵为方阵
};

void Test()
{
    int a[5][5] = { 
                    { 0, 1, 2, 3, 4 },
                    { 1, 0, 1, 2, 3 },
                    { 2, 1, 0, 1, 2 },
                    { 3, 2, 1, 0, 1 },
                    { 4, 3, 2, 1, 0 }, 
                  };

    SymmtrixMatrix sm((int*)a, 5);
    sm.Print(5);
    
}

int main()
{
    Test();
    system("pause");
    return 0;
}

网站栏目:【数据结构】对称矩阵及对称矩阵的压缩存储
分享链接:http://bzwzjz.com/article/gpoipj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都h5网站建设 成都商城网站建设 成都响应式网站建设 攀枝花网站设计 营销型网站建设 成都企业网站制作 成都网站制作 宜宾网站设计 成都网站设计 网站制作 企业网站设计 网站制作公司 成都响应式网站建设公司 重庆企业网站建设 成都网站制作 网站建设方案 专业网站设计 成都网站建设公司 成都网站制作 成都网站建设公司 网站建设 成都网站设计