<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[success] # 插入排序 [不錯的文章先讀一下](https://juejin.im/post/6844904167778041869#heading-0) ~~~ 1.引用書里的話來說,插入排序每次排一個數組項,以此方式構建最后的排序數組。假定第一項已經排序了。 接著, 它和第二項進行比較——第二項是應該待在原位還是插到第一項之前呢?這樣,頭兩項就已正確 排序, 接著和第三項比較(它是該插入到第一、第二還是第三的位置呢),以此類推。 2.通俗的理解'插入排序'和'選擇排序' 在整體思路方面差不多,首先'插入排序'也是將整個排序分成兩個區間, 分別是'排序區間'和'未排序區間',每次會從'未排序區間'中取值去以排序區間中比較,比較后將這個值插入到 '以排序區間' 3.'插入排序'和'選擇排序' 做個比較理解,'插入'是從'未排序區間'取值在'以排序區間去比較','選擇'是從'未排序區間' 依次找到最小值放到'以排序區間' 4.如圖紅色區域就是'已排序區間',黃色就是'未排序'區間,依次從黃色區域取值去紅色區域比較,并且將值插入到 合適的紅色區域 ~~~ ![](https://box.kancloud.cn/be81c151f38d8923fe1ede31ac530ac4_811x505.gif) ![](https://img.kancloud.cn/97/42/97425c50afdde006032fb7eaf691df49_535x326.png) >[info] ## 代碼實現 * 通用方法 ~~~ // 生成隨機數數組 function randomArray(max, min, len) { let randomNum = 0 const array = [] for (let i = 0; i < len; i++) { randomNum = Math.floor((Math.random() * (max - min + 1)) + min) array.push(randomNum) } return array } const array = randomArray(1, 10, 5) const Compare = { LESS_THAN: -1, BIGGER_THAN: 1, EQUALS: 0 }; function defaultCompare(a, b) { if (a === b) { return Compare.EQUALS; } return a < b ? Compare.LESS_THAN : Compare.BIGGER_THAN; } ~~~ >[danger] ##### 代碼效果 ~~~ 1.這里默認將第一個元素作為'已排序'區間中的內容,這樣方便后續邏輯 2.通過過動態圖來理解下面插入算法中的while邏輯,首先是吧整個數組分成兩個區域 '已排序區域' 一個是 '為排序區域',第一層for是從為排序區域取出一個,'已排序區域'就是 從當前這個值往后都是以排序區域,因此while 的判斷循環j 是從取點位置開始的,注意 動圖插入的那個動作,如果你比我小我就把你往后移動,如果你比我大我就到大了位置, 整個while 就結束了,這個值就到了j的位置 ~~~ ~~~ // 插入排序 function insertionSort(array, compareFn = defaultCompare) { const { length } = array; let temp; for (let i = 1; i < length; i++) { let j = i; temp = array[i]; while (j > 0 && compareFn(array[j - 1], temp) === Compare.BIGGER_THAN) { array[j] = array[j - 1]; j--; } array[j] = temp; } return array; }; insertionSort(array) console.log(array) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看