冒泡排序示意圖spa
冒泡排序程序code
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)
選擇排序示意圖blog
選擇排序程序排序
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 }