冒泡排序:
數值小的慢慢向上浮起,形同冒泡,即升序排列數值
實現過程:
相鄰數值兩兩交換,每輪冒泡(循環)把最小/大的數放在最后。
從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);
如果其與我們的期望一致,則不用交換。
重復這樣的過程,一直到最后沒有數值需要交換,則排序完成。
關鍵點:
冒泡排序的輪次 最大為 n-1
每輪的交換次數 最大為 n-1,n-2,n-3,....1
圖解:
代碼實例:
//冒泡排序 升序 var arr=[3,5,4,6,1,2] //比較輪數 for(var i=0;i<arr.length-1;i++){ //每輪比較次數 for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ if(arr[j]>arr[j+1]){ //借助第三方變量temp交換兩個變量的值 var temp=arr[j];//當前值 //通過比較相鄰位置互換 arr[j]=arr[j+1];//把后一位值向前移一位 arr[j+1]=temp;//把當前一位值向后移一位 } } }
} console.log(arr);//輸出結果[1,2,3,4,5,6]
簡單封裝
//封裝 function compare(arr){ //比較輪數 for(var i=0;i<arr.length-1;i++){ //沒輪比較次數 for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ //借助第三方變量temp交換兩個變量的值 var temp=arr[j];//當前值 //通過比較相鄰位置互換 arr[j]=arr[j+1];//把后一位值向前移一位 arr[j+1]=temp;//把當前一位值向后移一位 } } } return arr; } console.log(compare([5,6,5,2,8,9])); //輸出[2, 5, 5, 6, 8, 9]
數組排序其他方法
sort()
var arr=[3,5,4,6,1,2] //sort() function sortNumber(a,b){ //return a-b;//升序 return b-a;降序 } console.log(arr.sort(sortNumber));//輸出[6, 5, 4, 3, 2, 1]