零、写在最前
排序的方法有很多种,这篇文章只是记录我熟悉的算法;
我发现了一个关于排序算法很有趣的网站,把相关的算法演示做成了动画,有兴趣的同学可以看看!
附上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 ---------------------
时间: 2024-10-18 23:55:01