最近在看数据结构,对上三角矩阵中ij和k的值之间的关系不太明白,在网上寻的一文,解惑之,故摘抄只此处以做记录;

原文:

    http://blog.sina.com.cn/s/blog_4ae187490100cy6x.html


摘抄部分(为便于理解略有改动):

上三角矩阵中,主对角线之上的第p行(0≤pij时:

     aij元素前有i行(从第0行到第i-1行),一共有:

        (n-0)+(n-1)+(n-2)+…+(n-(i-1))

        =in-(0+1+2+...+(i-1))   //从0开始至i-1,故有i个n;

        =in-((i-1)+1)(i-1)/2      //根据高斯算法n(n+1)/2;

        =in-i(i-1)/2                 //((i-1)+1)=i;

        =2in/2-i(i-1)/2           //in乘2除2=in,分母相同作减法;

        =2in-i(i-1)/2              

        =i×(2n-i+1)/2个元素 //提取i,并去括号得;

     在第i行上,aij之前恰有j-i个元素(即aij,ai,j+l,…,ai,j-1),因此有:
          sa[i×(2n-i+1)/2+j-i]= aij 
所以:
     ┌i×(2n-i+1)/2+j-i 当i≤j
   k=│
      └n×(n+1)/2 当i>j