這篇文章給大家分享的是有關(guān)Java冒泡排序的案例的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
宜賓網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,宜賓網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為宜賓上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的宜賓做網(wǎng)站的公司定做!1、 導(dǎo)言
因為這是排序算法系列的第一篇文章,所以多啰嗦幾句。
排序是很常見的算法之一,現(xiàn)在很多編程語言都集成了一些排序算法,比如Java 的Arrays.sort()方法,這種方式讓我們可以不在乎內(nèi)部實現(xiàn)細(xì)節(jié)而直接調(diào)用,在實際的軟件開發(fā)當(dāng)中也會經(jīng)常使用到。但是站在開發(fā)者的角度而言,知其然必須知其所以然。多練練排序算法,不僅能夠讓我們知道一些排序方法的底層實現(xiàn)細(xì)節(jié),更能夠鍛煉我們的思維,提升編程能力?,F(xiàn)在很多技術(shù)面試也會涉及到基本的排序算法,所以多練習(xí)是有好處的。(推薦:Java視頻教程)
文中涉及到的代碼都是Java實現(xiàn)的,但是不會涉及到太多的Java語言特性,并且我會加上詳細(xì)的注釋,幫助你理解代碼并且轉(zhuǎn)換成你熟悉的編程語言。
常見的排序算法有以下10種:
在開始具體的排序算法講解之前,先得明白兩個概念:
2. 言歸正傳
冒泡排序的思路其實很簡單,一個數(shù)據(jù)跟它相鄰的數(shù)據(jù)進(jìn)行大小的比較,如果滿足大小關(guān)系,就將這兩個數(shù)據(jù)交換位置。一直重復(fù)這個操作,就能將數(shù)據(jù)排序。
舉個例子,假如有數(shù)組 a[3,5,1,4,9,6],第一次冒泡的操作如下圖所示:
重復(fù)進(jìn)行這個操作,6次冒泡之后,數(shù)據(jù)排序完成。
根據(jù)這個思路,應(yīng)該能很容易能夠?qū)懗鱿旅娴拇a實現(xiàn)冒泡排序:
public class BubbleSort { //data表示整型數(shù)組,n表示數(shù)組大小 public static void bubbleSort(int[] data, int n){ //數(shù)組大小小于等于1,無須排序 if (n <= 1) return; for (int i = 0; i < n; i++) { for (int j = 0; j < n - i - 1; j++) { //如果data[j] > data[j + 1],交換兩個數(shù)據(jù)的位置 if (data[j] > data[j + 1]){ int temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } } }
但是這個排序算法還可以進(jìn)行優(yōu)化,當(dāng)冒泡操作已經(jīng)沒有數(shù)據(jù)交換的時候,說明排序已經(jīng)完成,就不用在進(jìn)行冒泡操作了。例如上面的例子,第一次冒泡之后,數(shù)據(jù)為 [3,1,4,5,6,9],再進(jìn)行一次冒泡,數(shù)據(jù)變?yōu)?[1,3,4,5,6,9],此時已經(jīng)完成了排序,就可以結(jié)束循環(huán)了。
所以針對這個數(shù)組的排序,上面的代碼需要6次冒泡才能完成,其中有4次都是不需要的。所以可以對代碼進(jìn)行優(yōu)化:
public class BubbleSort { //優(yōu)化后的冒泡排序 //data表示整型數(shù)組,n表示數(shù)組大小 public static void bubbleSort(int[] data, int n){ //數(shù)組大小小于等于1,無須排序,返回空 if (n <= 1) return; for (int i = 0; i < n; i++) { boolean flag = false;//判斷是否有數(shù)據(jù)交換 for (int j = 0; j < n - i - 1; j++) { //如果data[j] > data[j + 1],交換兩個數(shù)據(jù)的位置 if (data[j] > data[j + 1]){ int temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; flag = true;//表示有數(shù)據(jù)交換 } } //如果沒有數(shù)據(jù)交換,則直接退出循環(huán) if (!flag) break; } } }
好了,冒泡排序的基本思路和代碼都已經(jīng)實現(xiàn),最后總結(jié)一下:
感謝各位的閱讀!關(guān)于Java冒泡排序的案例就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
文章名稱:Java冒泡排序的案例-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://jinyejixie.com/article2/dsicic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、App開發(fā)、小程序開發(fā)、企業(yè)建站、建站公司、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容