1. 程式人生 > 其它 >前端中的演算法3:選擇排序

前端中的演算法3:選擇排序

技術標籤:JS演算法原生JS演算法javascript

二分一般針對有序排序的數 亂序排列 可以學習最簡單的選擇排序

選擇排序速度並不快 但是很好懂

用大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;
    }

執行結果

額外補充 這種陣列操作 還有另外一種 連結串列

陣列的 查詢 讀取速度快

連結串列的刪除和新增塊