首页 > 代码库 > javascript学习笔记数组排序

javascript学习笔记数组排序

数组排序

1、冒泡排序   最常用也是最容易理解的排序方式(一个嵌套的循环比较每一次的大小根据设定的条件来交换位置)。

 1 function bubblesort(ary) { 2             for (var i = 0; i < ary.length - 1; i++) { 3                 for (var j = 0; j < ary.length - i - 1; j++) { 4                     if (ary[j] > ary[j + 1]) { 5                         var temp = ary[j]; 6                         ary[j] = ary[j + 1]; 7                         ary[j + 1] = temp; 8                     } 9                 }10             }11         }

 

2、插入排序  通过每一个比较然后将比较后大的或者小的值插入到前面一个数的位置,在当前位置上的值下标往后移一位

 1 function insertionsort() { 2         if (arr.length > 1) { 3             var temp = null; 4             for (var i = 1; i < arr.length; i++) { 5                 if (arr[i]<arr[i-1]) { 6                     temp = arr[i]; 7                     var p = i - 1; 8                     while (p >= 0 && arr[p] > temp) { 9                         arr[p + 1] = arr[p];10                         p--;11                     }12                     arr[p + 1] = temp;13                 }14             }15         }16     }

 3、快速排序  快速排序又叫二分法排序,通过递归的方式将数组分解,然后在通过concat将所有分解的数组进行拼接

 1 function quicksort(tarr) { 2         if (tarr.length>1) { 3             var centerIndex = parseInt(tarr.length / 2); 4             var larr=tarr.splice(centerIndex,1); 5             var left=[],right=[]; 6             for(var i=0;i<tarr.length;i++){ 7                 if(tarr[i]<larr[0]) { 8                     left.push(tarr[i]); 9                 }else{10                     right.push(tarr[i]);11                 }12             }13             return fnKspx(left).concat(larr,fnKspx(right));14         }else{15             return tarr;16         }17     }

 

javascript学习笔记数组排序