前端中的演算法3:選擇排序
阿新 • • 發佈:2020-12-10
二分一般針對有序排序的數 亂序排列 可以學習最簡單的選擇排序
選擇排序速度並不快 但是很好懂
用大O表示法 O (n的平方) 這裡的數有6個 正常來講的 是 36次
而這裡沒有嚴格的按照這個來 次數是 6+ 5 + 4 + 3 + 2 + 1次 執行的次數為 6*1/2*7 n*1/2*(n+1)
平均檢查的元素為(n+1)/2
let score = [99, 85, 43, 70, 20, 88];//一個分數的集合 function getMin(list) { var min = list[0];//設定最小的數 var minIndex = 0;//設定最小數的下標 for (let i = 0; i < list.length; i++) {//迴圈6次 let item = list[i]; if (item <= min) { //如果比這個預設值小 最小數就是誰 min = item; minIndex = i; } } return minIndex;//返回返回值 用下標好一點 因為可以根據下標刪除 } function search(list){ var newList = []; for(var i=0;i<list.length;i++){ let minIndex = getMin(list); //找到最小值 並且從集合中刪除 放入到新的集合中 newList.push(...list.splice(minIndex,1)); i--;//刪除以後 每次都從0開始 } return newList; }
執行結果
額外補充 這種陣列操作 還有另外一種 連結串列
陣列的 查詢 讀取速度快
連結串列的刪除和新增塊