震驚??!JAVA中選擇排序竟然是這樣子的!

? ? ? 說到選擇排序,可能會想起冒泡排序。

????????冒泡排序選擇排序不禁會問它們有什么區(qū)別? 的確, 它們的基本思想是一樣的. 都是通過一輪的循環(huán)找到所要排序數(shù)中的最值(最大值或最小值), 然后將最?。ù螅┲抵糜诘锥撕晚敹?,它們的區(qū)別主要體現(xiàn)在對其他數(shù)(不是最值)的處理上.?

  冒泡排序: 通過相鄰的兩個(gè)數(shù)的比較, 根據(jù)需要決定是否將兩個(gè)數(shù)互換位置, 然后將比較往前(或往后)推進(jìn).?

????????例如, 要求從小到大排序. 通過將兩個(gè)數(shù)比較, 將較大的數(shù)置換到右邊. 如此不斷循環(huán)將得到最值.

  選擇排序: 這個(gè)算法從名字可以看出來的意思是從序列中選擇出最小的數(shù)放在隊(duì)列頭,或者將最大的數(shù)放在隊(duì)列尾也是一樣的道理。和冒泡排序不同, 選擇排序使用標(biāo)記最值所在位置的方式, 查找最值過程中不移動數(shù)位置, 只是在最后將最值置換到頂端.

? ??????注意選擇排序與冒泡排序的區(qū)別:冒泡排序通過依次交換相鄰兩個(gè)順序不合法的元素位置,從而將當(dāng)前最?。ù螅┰胤诺胶线m的位置;而選擇排序每遍歷一次都記住了當(dāng)前最?。ù螅┰氐奈恢?,最后僅需一次交換操作即可將其放到合適的位置。

? ? ? ? 話不多說來段代碼先:



// 選擇排序

public static class SelectionSort {

public static void main(String[] args) {

? ? ? ? int[] arr={1,3,2,45,65,33,12};

? ? ? ? System.out.println("交換之前:");

? ? ? ? for(int num:arr){

? ? ? ? ? ? System.out.print(num+" ");

? ? ? ? }? ? ? ?

? ? ? ? //選擇排序的優(yōu)化

? ? ? ? for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序

? ? ? ? ? ? int k = i;

? ? ? ? ? ? for(int j = k + 1; j < arr.length; j++){// 選最小的記錄

? ? ? ? ? ? ? ? if(arr[j] < arr[k]){

? ? ? ? ? ? ? ? ? ? k = j; //記下目前找到的最小值所在的位置

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? //在內(nèi)層循環(huán)結(jié)束,也就是找到本輪循環(huán)的最小的數(shù)以后,再進(jìn)行交換

? ? ? ? ? ? if(i != k){? //交換a[i]和a[k]

? ? ? ? ? ? ? ? int temp = arr[i];

? ? ? ? ? ? ? arr[i] = arr[k];

? ? ? ? ? ? ? ? arr[k] = temp;

? ? ? ? ? ? }? ?

? ? ? ? }

? ? ? ? System.out.println();

? ? ? ? System.out.println("交換后:");

? ? ? ? for(int num:arr){

? ? ? ? ? ? System.out.print(num+" ");



找來了動態(tài)圖示,可以更加方便的去理解,選擇排序。這種比文字更好的去理解。


下面圖示選擇排序? ? ↓↓↓:

文中多為轉(zhuǎn)載,來自以下。

【圖解算法】排序算法 :https://blog.csdn.net/xiaoping0915/article/details/72615195

Java中的經(jīng)典算法之選擇排序:https://www.cnblogs.com/shen-hua/p/5424059.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個(gè)月起每個(gè)月都生一對兔子,小兔子長到第三個(gè)月后每個(gè)月又生一...
    阿里高級軟件架構(gòu)師閱讀 3,399評論 0 19
  • 7種常用的排序算法總結(jié) 2016.04.30PoetryAlgorithm 排序算法:一種能將一串?dāng)?shù)據(jù)依照特定的排...
    raining_804f閱讀 874評論 0 0
  • 抓一把青春,用兒時(shí)玩過的泥巴緊緊她裹住,密不疏氣。埋藏百萬年以后,拋開,方見青春質(zhì)為化石。只是那時(shí)的我,又歡喜在...
    怪蜀黍談情閱讀 480評論 0 6
  • 倆閨蜜聊天, 姐說和老公生氣,妹說為啥啊? 因?yàn)槲一ㄥX,妹說你不對人家掙錢多不容易,不能隨便花,知道嗎? 姐說,我...
    遇見Qin閱讀 320評論 0 0
  • 吾為法曹,初為漲公平正義之氣,而匡扶天地浩然正氣;公平正義如懸日當(dāng)空,雖高高在上,卻能光輝灑于天地。后漸感...
    蘇樺_0476閱讀 249評論 0 0

友情鏈接更多精彩內(nèi)容