冒泡排序示意圖

冒泡排序程式
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 }
睡眠排序:
例
1 <script> 2 var arr = [5,3,56,34,57,2,44,5] 3 var arr1 = [] 4 arr.forEach(item => { 5 setTimeout(function(){ 6 arr1.push(item) 7 },item) 8 }) 9 console.log(arr1) 10 </script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/126442.html
標籤:JavaScript
下一篇:Vue 樣式系結、事件系結
