JS 各种排序

var arr = [ 23,24,4,5,7];
//冒泡排序
function bubble( a ){
  var  temp = '';
  for( var i =0 ; i<a.length; i++){
    for( var j=i+1; j< a.length; j++){
       if( a[i] < a[j] ){
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
       }
    }
  }
  return a;
}

//插入排序
function insert( _arr ){
   var temp = 0 ,x  = 0; 
   for( var i = 1; i< _arr.length; i++ ){
        temp = _arr[i];
        x = i;
        while( x > 0 && temp < _arr[x-1] ){
           _arr[x] = _arr[x-1]; 
           x--;   
        }
        _arr[x] = temp;      
    }
    return _arr;
}
console.dir( insert(arr) );

//希尔排序
function shell( arr ){

   var d = arr.length/2 ,x =0 ;
   while( d >= 1 ){
       for( var i = d; i< arr.length; i+=d ){
        temp = arr[i];
        x = i;
        while( x > 0 && temp < arr[x-d] ){
           arr[x] = arr[x-d]; 
           x-=d;   
        }
        arr[x] = temp;      
      }
      d = d/2;
   } 
   return arr;

}


//堆排序
var arr = [6,3,28,65,99,15,76,88];
function initHeap( arr ){
    var p = parseInt( arr.length/2 );
    var ch1 = 0 ,ch2 = 0 , cur = 0 ,temp =0; 
    while( p >= 0 ){
     ch1 = 2*p+1; ch2 = 2*p+2;
         cur = ch1 ;
         if( arr[ch2] > arr[ch1]  ){
             cur = ch2; 
         }
         if( arr[cur] > arr[p]  ){
              temp = arr[p];
              arr[p] = arr[cur];
        arr[cur] = temp; 
         }
         p--;
  }
   return arr;
}

function heapSort( arr ){
   var ret = [] , len = arr.length; 
   for( var i=0;i<len ;i++ ){
      arr = initHeap( arr );
      ret.push( arr.shift() );
   }
   return ret;
}
console.dir( heapSort(arr) );

//选择排序
var a = [3,1,2,5,6];
function select( arr ){
    var k = 0, temp = 0;
    for( var i=0;i<arr.length;i++){
         k = getMinKey( arr, i );
         temp = arr[i];
         arr[i] = arr[k];
         arr[k] = temp;
    }
    return arr;
}
function getMinKey( arr , start ){
   for(var i=start;i<arr.length;i++){
       if( arr[i] < arr[start] )
           start = i;
   }
   return start;
}

 

posted @ 2016-12-21 13:04  ﹏Sakura  阅读(219)  评论(0)    收藏  举报