1. 冒泡排序ui
//冒泡排序(從小到大排列) function bubbleSort(arr){ //一共比較length-1次 for(var i=1, len=arr.length; i<len; i++){ //從尾到頭(固然也能夠從頭至尾) for(var j=len-1; j>0; j--){ //大的排在後面 if(arr[j] < arr[j-1]){ var tmp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = tmp; } } } return arr; } var arr = [6,5,4,3,2,1]; console.log(arr); console.log( bubbleSort(arr) );
2. 雞尾酒排序 (雙向的冒泡排序)spa
//雞尾酒排序排序(從小到大排列) function cocktailSort(arr) { //一共比較Math.ceil(length/2)次 for(var i = 0, len=arr.length; i < len/2; i++) { //將最小值排在隊頭 for(var j = i; j < len-i-1; j++) { //大換後 if(arr[j] > arr[j+1]) { var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } console.log( "大換後(index="+j+"):"+arr.join(',') ); } //將最大值排到隊尾 for(var j = len-i-1 ; j > i; j--) { //小換前 if(arr[j] < arr[j-1]) { var temp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = temp; } console.log( "小換前(index="+j+"):"+arr.join(',') ); } console.log("第"+(i+1)+"次排序結果:"+arr.join(',')); } return arr; }
var arr = [6,5,4,3,2,1];
console.log(arr); cocktailSort(arr);
3. 快速排序code
//快速排序 function quickSort(arr) { if (arr.length < 2) { return arr; } var firstItem = arr[0]; //取第一個數做爲基準數 var left = []; var right = []; //從第2個數開始,經過與基準數比較後,分紅大小兩類 for (var i = 1; i < arr.length; i++){ //小於基準數 if (arr[i] < firstItem) { left.push(arr[i]); } else { right.push(arr[i]); } } console.log(left.join(',')+" ("+firstItem+") "+right.join(',')); return quickSort(left).concat([firstItem], quickSort(right)); } var arr = [6,5,4,3,2,1,10,9,8,7]; console.log(quickSort(arr));