冒泡排序示意圖 冒泡排序程式 1 var arr = [4,2,5,7,8,2,1] 2 console.log(arr) 3 // 用冒泡排序從小到大 4 // 總共有arr.length個數,每一趟都能確定一個最大值,但是最後一個不需要比較 5 // 所以總共要比較arr.length-1趟 0 ...
冒泡排序示意圖
冒泡排序程式
1 var arr = [4,2,5,7,8,2,1] 2 console.log(arr) 3 // 用冒泡排序從小到大 4 // 總共有arr.length個數,每一趟都能確定一個最大值,但是最後一個不需要比較 5 // 所以總共要比較arr.length-1趟 0 ~ length-2 6 // 5 4 0~3 7 for (var i = 0; i < arr.length - 1; i++) { 8 // 當前第i趟要比較的次數 9 // arr.length i 比較次數 10 // 5 0 4 11 // 5 1 3 12 // 5 2 2 13 // arr.length i arr.length - i - 1 14 for (var j = 0; j < arr.length - i - 1; j++) { 15 // 相鄰的兩個數來比較 arr[j]和arr[j+1] 16 if (arr[j] > arr[j+1]) { 17 // 交換 18 var temp = arr[j] 19 arr[j] = arr[j+1] 20 arr[j+1] = temp 21 } 22 } 23 } 24 console.log(arr)
選擇排序示意圖
選擇排序程式
1 // 每一趟迴圈能確定當前的最小值,總的迴圈趟數arr.length-1 2 for (var i = 0; i < arr.length - 1; i++) { 3 // 先假設當前最小值的索引為i 4 var min = i 5 // 用假設的最小值跟後面的值一一比較 6 // 如果遇到後面的值比假設的最小值還要小,說明假設錯誤 7 // 最小值的索引應該重新賦值為後面小值的索引 8 // 一趟結束以後就可以得到最小索引,這個時候再交換 9 10 // 內層迴圈從i+1開始,每一趟都要比較到最後一個,所以到arr.length-1結束 11 for (var j = i + 1; j < arr.length; j++) { 12 // 判斷arr[min]是否大於arr[j],如果大於了,說明arr[j]才是最小值 13 // min就應該重新賦值為j 14 if (arr[min] > arr[j]) { 15 min = j 16 } 17 } 18 // 內層迴圈結束以後,當前這一趟的最小值就被找到了 19 // 讓arr[i]和arr[min]交換 20 // 如果i和min相等,那麼就沒有交換的必要了 21 if (i != min) { 22 var temp = arr[i] 23 arr[i] = arr[min] 24 arr[min] = temp 25 } 26 }