并且希望算法可以解决 
 var x = 10
 alert(Math.pow(x, 2))x 不定...

解决方案 »

  1.   

    矩陈可以用一个二维数组来表示,每一行一个数组先将原矩陈转置,然后每一行再反向这个用javascript实现,不知道符不符合楼主要求://转置
    function Translate(o)
    {
    for (var i = 0; i < o.length; i++)
    {
    for (var j = 0; j < o[0].length; j++)
    {
    if (i < j)
    {
    var temp = o[i][j];
    o[i][j] = o[j][i];
    o[j][i] = temp;
    }
    }
    }
    }
    //倒置
    function Back(o)
    {
    for (var i = 0; i < arr.length; i++)
    {
    o[i] = o[i].reverse();
    }
    }
    //打印
    function Print(o)
    {
    for (var i = 0; i < o.length; i++)
    {
    for (var j = 0; j < o[0].length; j++)
    {
    document.write(o[i][j] + "&nbsp;&nbsp;");
    }

    document.write("<br />");
    }
    }//测试
    var arr = new Array(["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]);Print(arr); //打印原矩Translate(arr); //转置
    Print(arr);Back(arr); //行反向
    Print(arr);
      

  2.   

    呵呵, 俺就是想用JS写, C/C++写这个没意思..
    谢谢楼上的, 等一下俺试试你的方法...
      

  3.   

    谢谢 JGood(他山之石,可以攻玉), 你的方法对俺的需求完全有用...
    明天结... 加到100分...还有些更复杂的排序...俺慢慢弄了...
    <script type="text/javascript">
    /*<![CDATA[*/
     
     
     var Ar = fMakeArray(5, 1);
     
     document.write("<pre>");
     
     fPrintAr(Ar, "原数组");
     
     var Ar1 = Ar.slice();
     fPrintAr(Ar1, "拷贝数组 Ar1");
     
     Translate(Ar1);
     Back(Ar1);
     fPrintAr(Ar1, "Ar1->Right");
     
     var Ar2 = fMakeArray(4, 1);
     fPrintAr(Ar2, "Ar2");
     
     Translate(Ar2);
     Back(Ar2);
     fPrintAr(Ar2, "Ar2->Right");
      
     document.write("</pre>");
     
     function Translate(o)
     {
      for (var i = 0; i < o.length; i++ )
      {
       for (var j = 0; j < o[0].length; j++ )
       {
        if (i < j)
        {
         var temp = o[i][j];
         o[i][j] = o[j][i];
         o[j][i] = temp;
        }
       }
      }
     }
     
     //倒置
     function Back(o)
     {
      for (var i = 0; i < o.length; i++ )
      {
       o[i] = o[i].reverse();
      }
     }
     
     function fRorationRight(Ar)
     {
      
     }
     
     function fPrintAr(Ar, sHeader)
     {
      if(sHeader)
      {
       document.write(sHeader.bold(), "\n");
      }
      var Len = Ar.length;
      for(var i=0; i<Len; i++)
      {
       document.write(Ar[i], "\n");
      }
      document.write("\n");
     }
     
     function fMakeArray(iSquare, iStart, sSpace, iPadSpaceLen)
     { // shawl.qiu code, return array; Func: fRight, fStringSpace
      if(!iStart) iStart = 0;
      if(!sSpace) sSpace = " ";
      if(!iPadSpaceLen) iPadSpaceLen = 0;
      var iTotal = iSquare*iSquare;
      var iSpaceLen = (iTotal+"").length+iPadSpaceLen;
      var sSpace = fStringSpace(sSpace, iSpaceLen)
      //ert(iTotal)
      //ert(iSquare)
      //alert(iSpaceLen)
      
      var Ar = [];
      var Count = iStart;
      for(var i=0; i<iSquare; i++)
      { 
       var SubAr = [];
       for(var I=0; I<iSquare; I++)
       {
        SubAr.push(fRight(sSpace+(I+iSquare*i+iStart), iSpaceLen))
       }
       Ar.push(SubAr)
       continue;
      }
      return Ar;
     } // end function fMakeArray(iSquare, iStart, sSpace, iPadSpaceLen)
     
     function fRight(sStr, iRight)
     { // shawl.qiu code, return string
      if(!sStr) 
      {
       if(typeof(sStr)=="number") sStr = "0"
       else sStr = "";
      }
      if(typeof(sStr)=="number") sStr+="";
      
      if(!iRight) return sStr;
      return sStr.slice(sStr.length-iRight);
     } // end function fRight(sStr, iRight)  function fStringSpace(sStr, iTime)
     { // shawl.qiu code, return string
      var nLen=arguments.length;
      if(nLen===0)
      {
       sStr='&nbsp;'
       iTime=2;
      }
      
      if(nLen==1)
      {
       sStr+='&nbsp;';
       iTime=2;
      }
      return new Array(iTime+1).join(sStr);
     } // end function fStringSpace 
     
    /*]]*/
    </script>