中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何選擇排序及其優化

發布時間:2021-10-13 09:57:05 來源:億速云 閱讀:116 作者:iii 欄目:編程語言

這篇文章主要講解了“如何選擇排序及其優化”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何選擇排序及其優化”吧!

我們先來看看最原始的版本

for (int i = 0; i < beg.length - 1; i++) {for (int j = i + 1; j < beg.length; j++) {if (beg[i] >= beg[j]) {int temp = beg[j];beg[j] = beg[i];beg[i] = temp;
        }
    }
}for (int k = 0; k < beg.length; k++) {
    System.out.print(beg[k] + ",");
}

我們可以發現外面的循環每次都是第i個數和剩下的length-i-1個數做比較

如下圖

如何選擇排序及其優化

優化:

每次遍歷找出最大值和最小值,那么我們循環的次數就會少1/2

for (int i = 0; i < (beg.length - 1) / 2; i++) {int min = i;int max = i;for (int j = i + 1; j < beg.length - i; j++) {
        min = beg[i] >= beg[j] ? j : min;
        max = beg[i] >= beg[j] ? max : j;
    }if (min + max == beg.length - 1) {int temp3 = beg[beg.length - 1 - i];beg[beg.length - 1 - i] = beg[i];beg[i] = temp3;
    } else {int temp = beg[min];int temp2 = beg[max];beg[min] = beg[i];beg[max] = beg[beg.length - 1 - i];beg[i] = temp;beg[beg.length - 1 - i] = temp2;
    }
}for (int k = 0; k < beg.length; k++) {
    System.out.print(beg[k] + ",");
}

最外層遍歷少了1/2 而里層遍歷又少隨著最大值和最小值的縮小而縮小區間

如何選擇排序及其優化

這里需要考慮一下極值的情況即最大值和最小值剛好交換的情況,如圖中1和9剛好是最大值與最小值

感謝各位的閱讀,以上就是“如何選擇排序及其優化”的內容了,經過本文的學習后,相信大家對如何選擇排序及其優化這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘谷县| 金坛市| 苍山县| 沂南县| 秦安县| 广河县| 滁州市| 金坛市| 乌拉特后旗| 丹阳市| 松阳县| 永康市| 孟连| 平安县| 靖西县| 内黄县| 昌图县| 阿勒泰市| 荔波县| 电白县| 贡山| 九江市| 英吉沙县| 应城市| 个旧市| 伊金霍洛旗| 彭泽县| 沙湾县| 乾安县| 工布江达县| 井冈山市| 金川县| 本溪| 曲阳县| 连山| 万全县| 岳普湖县| 游戏| 龙井市| 莱西市| 温州市|