javascript冒泡排序小結(jié)

字號:


    冒泡排序示例,雙向冒泡排序與對雙向冒泡排序稍微的改進(jìn)的可視化效果。
    代碼很簡單,不知道有木有未知bug。
    冒泡排序示例
    var ls=[ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
    for(var i=0;i<ls.length;i++){
          for(var j=i+1;j<ls.length;j++){
            if(ls[i]>ls[j]){
              ls[i]=ls[i]+ls[j];
              ls[j]=ls[i]-ls[j];
              ls[i]=ls[i]-ls[j];
            } 
          }
        }
    雙向冒泡排序示例
    var ls=[ 6,13,98,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
    for(var i=0;i<ls.length;i++){
          for(var j=i+1;j<ls.length-i;j++){
            if(ls[lent-1-i]<ls[lent-j]){
              ls[lent-1-i]=ls[lent-1-i]+ls[lent-j];
              ls[lent-j]=ls[lent-1-i]-ls[lent-j];
              ls[lent-1-i]=ls[lent-1-i]-ls[lent-j];
            }//后面的比較
            if(ls[i]>ls[j]){
              ls[i]=ls[i]+ls[j];
              ls[j]=ls[i]-ls[j];
              ls[i]=ls[i]-ls[j];
            }//前面的比較
          }
        }
    雙向冒泡排序稍微改進(jìn)示例
    var ls=[ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
    var lent=ls.length;
    for(var i=0;i<ls.length;i++){
          for(var j=i*2;j<ls.length-2*i;j++){
            if(ls[i*2]>ls[j+1]){
              ls[i*2]=ls[i*2]+ls[j+1];
              ls[j+1]=ls[i*2]-ls[j+1];
              ls[i*2]=ls[i*2]-ls[j+1];
            }//保持內(nèi)層第一個數(shù)為循環(huán)最小
            if(ls[lent-i*2-1]<ls[lent-j-1]){
              ls[lent-i*2-1]=ls[lent-i*2-1]+ls[lent-j-1];
              ls[lent-j-1]=ls[lent-i*2-1]-ls[lent-j-1];
              ls[lent-i*2-1]=ls[lent-i*2-1]-ls[lent-j-1];
            }////保持內(nèi)層倒數(shù)第一個數(shù)為循環(huán)最大
              if(ls[lent-2-i*2]<ls[lent-j-1]){
                ls[lent-2-i*2]=ls[lent-2-i*2]+ls[lent-j-1];
                ls[lent-j-1]=ls[lent-2-i*2]-ls[lent-j-1];
                ls[lent-2-i*2]=ls[lent-2-i*2]-ls[lent-j-1];
              }//倒數(shù)上一個
                
              if(ls[i*2+1]>ls[j+1]){
                ls[i*2+1]=ls[i*2+1]+ls[j+1];
                ls[j+1]=ls[i*2+1]-ls[j+1];
                ls[i*2+1]=ls[i*2+1]-ls[j+1];
              }//下一個
          }
    }