1.冒泡排序法
<script> var arr = [3, 5, 1, 8, 2, 9, 4]; //i控制的是循環多少趟 for (var i = 0; i < arr.length - 1; i++) { //假設當前的數據是已經排好序的 var flag = true; //j控制的是每一次的比較,j和j+1比較,說明,j取到arr.length-1就可以了 //外循環i每執行一次,就會有i個值排好序,所以每一次比較的次數就為arr.length-1-i for (var j = 0; j < arr.length -1 - i; j++) { //如果前一項比后一項大,兩兩交換位置 if (arr[j] > arr[j + 1]) { var temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; //如果發生交換位置,說明沒有排好序 flag = false; } } //每一次比完看flag的值,如果是true,說明已經排好序,結束循環 if(flag){ break; } } console.log(arr); </script>
2.插入排序法
<script> var arr = [3, 5, 1, 8, 2, 9, 4]; //插入排序法 for (var i = 1; i < arr.length; i++) { //從第二個數開始 var temp = arr[i]; //j表示從temp的前一個數開始,依次減減去比較 for (var j = i-1; j >= 0; j--) { //如果當前值比它的前一項小 if(temp < arr[j]){ //將前一項的位置往后移動一位 arr[j+1] = arr[j]; } else{ //如果不滿足,結束循環 break; } } //當內部循環結束的時候,給temp插到對應的值 arr[j+1] = temp; } console.log(arr);