1、冒泡
function bubb(arr,isDesc){ var len = arr.length; for(var i=0;i<len;i++){ for(var j=i+1;j<len;j++){ if(arr[i] > arr[j]){ var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; }
2、插入排序(当数据有序层度越高时,效率越高)数据量不宜太大
// 插入排序分为 已排序区,和为排序区 function insert(arr){ var len = arr.length; if(len == 1){ return arr; }else{ for(var i=1;i<len;i++){ var temp = arr[i]; for(var j=i-1;j>=0;j--){ if( temp < arr[j]){ arr[j + 1] = arr[j]; }else{ break; } } arr[j + 1] = temp;//最后插入时,临界位置 } } }
3、希尔排序
// 希尔排序 ,在插入排序上将大数据进行分组,对每个分组进行插入排序; function shell(arr){ var len = arr.length, gap = len;// 增量 通过增量在逻辑上吧原数组分组,将每个分组进行插入排序,并且减小增量大小,,直到为1 while(gap > 1){ gap = Math.floor(gap / 2); for(var x=0;x<gap;x++){//分组个数 for(var i=x+gap;i<len;i = i+gap){ var temp = arr[i]; for(var j=i-gap;j>=0;j = j-gap){ if( temp < arr[j]){ arr[j + gap] = arr[j]; }else{ break; } } arr[j + gap] = temp;//最后插入时,临界位置 } } } }