<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >[warning]選擇排序 ---- > 跑一次, 找最小, 然后交換, 多執行幾次 ---- ##### 看圖說話 ----- ![](https://box.kancloud.cn/f37e5468225dff6e2edd0d9bec3778a2_954x537.gif) ---- 1. 先學會交換2個變量的值 ~~~ let a = 10, b = 20; let c = a; a = b; b = c; console.log(a, b); ~~~ 2. 找到, 數組中最小元素的下標 ~~~ let arr = [2, 5, 8, 1, 3, 4, 10, 9]; let minIndex = 0; for (let j = 0; j < arr.length; j++){ if (arr[j] < arr[minIndex]){ minIndex = j; } } console.log(minIndex); ~~~ 3. 把最小值, 和目標交換 ~~~ let arr = [2, 5, 8, 1, 3, 4, 10, 9]; let minIndex = 0; for (let j = 0; j < arr.length; j++){ if (arr[j] < arr[minIndex]){ minIndex = j; } } let c = arr[0]; arr[0] = arr[minIndex]; arr[minIndex] = c; console.log(arr); ~~~ 4. 這樣第一位放了最小值, 那讓上面代碼, 多執行幾次是不是就好了呢 ~~~ let arr = [2, 5, 8, 1, 3, 4, 10, 9]; for (let i = 0; i < arr.length; i++) { // 注意這里不能再用0了, 因為第二次執行, 0位置已經是最小值了, 所以這里直接用i, 讓索引繼續向后 let minIndex = i; // 這里也注意不要用0, 因為0位置放了最小值, 而且也不要用i, 自己和自己比沒有意義 for (let j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } let c = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = c; } console.log(arr); ~~~ ----------- ## 擴展1: ~~~ 當外層循環到最后一次, 沒有必要再比較了, 所以最外層可以-1 ~~~ 優化后代碼: ~~~ let arr = [2, 5, 8, 1, 3, 4, 10, 9]; for (let i = 0; i < arr.length - 1; i++) { let minIndex = i; for (let j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } let c = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = c; } console.log(arr); ~~~ ## 擴展2: ~~~ 內層for循環后, 發現i就是最小值的下標, 不需要交換, 所以給判斷加個判斷條件 ~~~ 優化后代碼: ~~~ let arr = [2, 5, 8, 1, 3, 4, 10, 9]; for (let i = 0; i < arr.length - 1; i++) { let minIndex = i; for (let j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } if (minIndex !== i){ let c = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = c; } } console.log(arr); ~~~
                  <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>

                              哎呀哎呀视频在线观看