標籤: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的幾種排序演算法