码迷,mamicode.com
首页 > 编程语言 > 详细

记一下JavaScript的几种排序算法

时间:2017-03-29 18:52:53      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:script   ice   记录   pre   color   有趣   方法   希尔排序   nim   

零、写在最前

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

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

  附上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的几种排序算法

标签:script   ice   记录   pre   color   有趣   方法   希尔排序   nim   

原文地址:http://www.cnblogs.com/anniey/p/6641057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!