js的各种排序算法实现(总结)

前端之家收集整理的这篇文章主要介绍了js的各种排序算法实现(总结)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

如下所示:

while(j > i){ // j <<-------------- 向前查找 if(array[j] >= key){ j--; }else{ array[i] = array[j] //i++ ------------>>向后查找 while(j > ++i){ if(array[i] > key){ array[j] = array[i]; break; } } } } // 如果第一个取出的 key 是最小的数 if(tempi == i){ Sort(++i,tempj); return ; } // 最后一个空位留给 key array[i] = key; // 递归 Sort(tempi,i); Sort(j,tempj); } Sort(i,j); return array;

},// 插入排序
insertSort:function(array){
// http://baike.baidu.com/image/d57e99942da24e5dd21b7080
// http://baike.baidu.com/view/396887.htm
// var array = [0,7];
var i = 1,temp,key,len = array.length;
for(; i < len; i++){
temp = j = i;
key = array[j];
while(--j > -1){
if(array[j] > key){
array[j+1] = array[j];
}else{
break;
}
}
array[j+1] = key;
}
return array;
},// 希尔排序
//Jun.array.shellSort(Jun.array.df(10000));
shellSort:function(array){
// http://zh.wikipedia.org/zh/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F
// var array = [13,14,94,33,82,25,59,23,27,73,39,10];
// var tempArr = [1750,701,301,132,57,10,1];
// reverse() 在维基上看到这个最优的步长 较小数组
var tempArr = [1031612713,217378076,45806244,9651787,2034035,428481,90358,19001,4025,836,182,1]
//针对大数组的步长选择
var i = 0;
var tempArrtempArrLength = tempArr.length;
var len = array.length;
var len2 = parseInt(len/2);

 for(;i < tempArrLength; i++){ 
   if(tempArr[i] > len2){ 
     continue; 
   }
   tempSort(tempArr[i]); 
 }
 // 排序一个步长 
 function tempSort(temp){ 
   //console.log(temp) 使用的步长<a href="https://www.jb51.cc/tag/tongji/" target="_blank" class="keywords">统计</a> 
   var i = 0,j = 0,f,tem,key; 
   var tempLen = len%temp > 0 ? parseInt(len/temp) + 1 : len/temp;  

   for(;i < temp; i++){// 依次循环列 

     for(j=1;/*j < tempLen && */temp * j + i < len; j++){
        //依次循环每列的每行 
       tem = f = temp * j + i; 
       key = array[f]; 

       while((tem-=temp) >= 0){ 
          // 依次向上查找
         if(array[tem] > key){
           array[tem+temp] = array[tem];
         }else{
           break;
         }
       }
       array[tem + temp ] = key;
     }
   }
 }
 return array;

}
}

以上这篇js的各种排序算法实现(总结)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。

原文链接:https://www.f2er.com/js/47138.html

猜你在找的JavaScript相关文章