摘要:冒泡排序一種運(yùn)行效率很低的排序算法,然而雖然排序效率低,確實(shí)排序入門很重的算法,因?yàn)槊芭菖判虻乃悸肥亲詈?jiǎn)單最容易理解的排序算法了。二冒泡排序定義冒泡排序是一種通過(guò)兩兩比較相鄰記錄的關(guān)鍵字,如果反序則交換,直到?jīng)]有反序的記錄為止的交換排序。
一、前言
相信大部分同學(xué)都已經(jīng)學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)與算法這門課了,并且我們可能都會(huì)發(fā)現(xiàn)一個(gè)現(xiàn)象就是我們所學(xué)過(guò)的數(shù)據(jù)結(jié)構(gòu)與算法類的書(shū)籍基本都是使用 C 語(yǔ)言來(lái)寫(xiě)的,好像沒(méi)見(jiàn)過(guò)使用 Java 寫(xiě)的數(shù)據(jù)結(jié)構(gòu)與算法。
帶著這個(gè)好奇心,我去查了下資料,國(guó)內(nèi)基本找不到使用 Java 寫(xiě)的數(shù)據(jù)結(jié)構(gòu)與算法書(shū)籍,有一本書(shū)叫《Java 數(shù)據(jù)結(jié)構(gòu)與算法》,這本書(shū)的代碼是使用 Java 實(shí)現(xiàn)的,不過(guò)這本書(shū)是國(guó)內(nèi)的學(xué)者翻譯國(guó)外的書(shū)籍寫(xiě)出來(lái)的,個(gè)人感覺(jué)這本書(shū)對(duì)于初學(xué)者來(lái)說(shuō),還是比較難理解的。
冒泡排序一種運(yùn)行效率很低的排序算法,然而雖然排序效率低,確實(shí)排序入門很重的算法,因?yàn)槊芭菖判虻乃悸肥亲詈?jiǎn)單最容易理解的排序算法了。
二、冒泡排序1、定義: 冒泡排序是一種通過(guò)兩兩比較相鄰記錄的關(guān)鍵字,如果反序則交換,直到?jīng)]有反序的記錄為止的交換排序。
2、實(shí)現(xiàn)思想: 通過(guò)比較兩兩相鄰記錄的關(guān)鍵字,將第一個(gè)記錄的關(guān)鍵字和第二個(gè)記錄的關(guān)鍵字進(jìn)行比較,如果后面的比前面的小則交換,然后比較第二個(gè)和第三個(gè),依次類推。比完一個(gè)循環(huán),最大的那個(gè)已經(jīng)放到了最后的位置,這樣就可以對(duì)前面N-1個(gè)數(shù)再循環(huán)比較。
下面以一群身高不等的學(xué)生為例,如下圖所示:
未排序的學(xué)生
已排序的學(xué)生
冒泡排序第一輪實(shí)現(xiàn)過(guò)程
三、冒泡排序的 Java 代碼實(shí)現(xiàn)1、冒泡排序?qū)崿F(xiàn)算法:
BubbleSort.java
package BubbleSort; /** * * 冒泡排序?qū)崿F(xiàn)算法 * */ public class BubbleSort { public void bubble(Integer[] data){ for(int i=0;idata[j+1]){ int tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; } } } } }
2、冒泡排序測(cè)試:
Test.java
package BubbleSort; import java.util.Arrays; /** * * 測(cè)試冒泡排序 * */ public class Test { public static void main(String[] args) { Integer[] list={149,138,165,197,176,113,127,114,110}; //冒泡排序 BubbleSort bs = new BubbleSort(); bs.bubble(list); System.out.println("排序前的結(jié)果為:" + Arrays.toString(list)); System.out.print("排序后的結(jié)果為:"); for(int i=0;i2、測(cè)試結(jié)果:
關(guān)注微信公眾號(hào)compassblog,了解更多
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/69378.html
摘要:常見(jiàn)的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實(shí)現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過(guò)程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見(jiàn)的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:常見(jiàn)的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實(shí)現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過(guò)程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見(jiàn)的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:常見(jiàn)的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實(shí)現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過(guò)程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見(jiàn)的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:二冒泡排序算法作為這一系列的第一部分,主要講解排序算法。直到隊(duì)列全部排好為止。到這里,我想你應(yīng)該明白了冒泡排序的思想了。 一、說(shuō)在前面 一直想寫(xiě)一些簡(jiǎn)單易懂的文章,因?yàn)槠綍r(shí)看的很多的書(shū)籍或者文章都是看著很難受的感覺(jué),當(dāng)然,這并不是說(shuō)書(shū)籍寫(xiě)的不好,只是說(shuō)對(duì)于一些沒(méi)有太多基礎(chǔ)或者基礎(chǔ)不是很好的來(lái)說(shuō),相對(duì)來(lái)說(shuō)還是比較難以理解的。 這個(gè)系列主要是寫(xiě)一些簡(jiǎn)單易懂的數(shù)據(jù)結(jié)構(gòu)與算法的文章,同時(shí)也是幫...
摘要:常見(jiàn)的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。用一張圖概括歸并排序英語(yǔ),或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為。 常見(jiàn)的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...
閱讀 3729·2021-11-24 09:39
閱讀 1359·2021-09-30 09:48
閱讀 3366·2021-09-09 11:51
閱讀 2976·2021-09-08 10:41
閱讀 1391·2019-08-30 14:06
閱讀 2870·2019-08-30 14:01
閱讀 928·2019-08-29 17:11
閱讀 3233·2019-08-29 15:37