首页 > 代码库 > 记一下JavaScript的几种排序算法

记一下JavaScript的几种排序算法

零、写在最前

  排序的方法有很多种,这篇文章只是记录我熟悉的算法;

  我发现了一个关于排序算法很有趣的网站,把相关的算法演示做成了动画,有兴趣的同学可以看看!

  附上SortAnimate网站链接:http://jun-lu.github.io/SortAnimate/index.html

一、冒泡排序

  这是一种最基础的排序算法,也就是入门级别的算法!

  原理:两两检测,比较两者之间的大小关系,大的往后丢!

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

二、快速排序

  常用、排序速度快,但有点浪费内存空间!

  原理:以中间基准点为中心进行比较,小的放左,大的放右,需要另外的2个数组存放;

 1 function quickSort(arr){
 2     if (arr.length <= 1) { return arr; }
 3     var index=Math.floor(arr.length/2);
 4     var center=arr.splice(index,1)[0];
 5     var left=[],right=[];
 6     for(var i=0;i<arr.length;i++){
 7         arr[i]<center ? left.push(arr[i]) : right.push(arr[i]);
 8     }
 9     return quickSort(left).concat([center],quickSort(right));
10 }

三、插入排序

  原理:逐个检测,最大的往最后丢,每次减少检测次数!

 1 function insertSort(arr){
 2     var arrLen=arr.length;
 3     for(var i=0;i<arrLen;i++){
 4         var index=0;
 5         for(var j=1;j<arrLen-i;j++){
 6             if(arr[j]>arr[index]) index=j;
 7         }
 8         var temp=arr[arrLen-i-1];
 9         arr[arrLen-i-1]=arr[index];
10         arr[index]=temp;
11     }
12     return arr;
13 }

四、结尾

  排序算法还有选择排序、希尔排序、二分排序等等.......

  我以后再学习,再来补充这篇文章!

-------------------- End ---------------------

记一下JavaScript的几种排序算法