最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java冒泡排序及優(yōu)化介紹

 更新時間:2021年12月20日 09:26:54   作者:HairLossException  
大家好,本篇文章主要講的是Java冒泡排序及優(yōu)化介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

什么是冒泡排序

冒泡排序指重復(fù)地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從小到大)錯誤就把他們交換過來。走訪元素的工作是重復(fù)地進行直到?jīng)]有相鄰元素需要交換,也就是說該元素列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。

思路分析

以{5,3,9,7,1}為例 要求排序后的數(shù)組元素順序按從小到大排序。依次比較相鄰的兩個數(shù)(藍色),將比較小的數(shù)放在前面,比較大的數(shù)放在后面。每一輪排序都能得到參與比較的數(shù)的最大值(紅色)
第一輪排序
5,3,9,7,1 //如果數(shù)大于相鄰的數(shù)就交換位置
3,5,9,7,1
3,5,9,7,1
3,5,7,9,1
3,5,7,1,9 //第一輪排序的結(jié)果
第二輪排序
3,5,7,1,9
3,5,7,1,9
3,5,7,1,9
3,5,1,7,9 //第二輪排序的結(jié)果
第三輪排序
3,5,1,7,9
3,5,1,7,9
3,1,5,7,9 //第三輪排序的結(jié)果
第四輪排序
3,1,5,7,9
1,3,5,7,9 //第四輪排序的結(jié)果

代碼實現(xiàn)

public class bubble {
    public static void main(String[] args) {
        int[] array = {5,3,9,7,1};
        bubbleSort(array);
    }
    /**
     * 冒泡排序
     */
    public static void bubbleSort(int[] array){
        int temp;
        //一共進行l(wèi)ength-1次排序
        for (int i = 0; i < array.length-1; i++) {
            //數(shù)組中沒有元素或者只有一個元素就無需排序
            if(array==null || array.length < 2 ){
                return;
            }
            //每進行一次排序后參與比較的數(shù)量減一
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j]>array[j+1]) {
                    //互換元素位置
                    temp = array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
            System.out.println("第"+(i+1)+"輪排序的結(jié)果是"+ Arrays.toString(array));
        }
        return;
    }
}

結(jié)果輸出

第1輪排序的結(jié)果是[3, 5, 7, 1, 9]
第2輪排序的結(jié)果是[3, 5, 1, 7, 9]
第3輪排序的結(jié)果是[3, 1, 5, 7, 9]
第4輪排序的結(jié)果是[1, 3, 5, 7, 9]

Process finished with exit code 0

代碼優(yōu)化

根據(jù)上述算法發(fā)現(xiàn)對于長度為n的數(shù)組需要進行n-1輪排序才能算出最終的結(jié)果,但是并非所有數(shù)組都需要n-1次才能等要最終的排序結(jié)果,比如{1,2,3,5,4}我們發(fā)現(xiàn)這個數(shù)組只需經(jīng)過一次排序就能得到結(jié)果,那么如何對上面的代碼進行優(yōu)化呢?只需判斷一輪排序下來有無出現(xiàn)元素互換位置就可以確定是否完成了排序。如果經(jīng)過一輪排序元素位置沒有發(fā)生互換說明排序已經(jīng)完成

public class bubblePlus {
    public static void main(String[] args) {
        int[] array = {1,2,3,5,4};
        bubboSort(array);
    }
	/**
	*冒泡排序
	*/
    public static void bubboSort(int[] array){
        int temp;
        //判斷是否有元素進行交換
        boolean flag = false;
        for (int i = 0; i < array.length-1; i++) {
            if(array==null || array.length < 2 ){
                return;
            }
            //每進行一次排序后參與比較的數(shù)量減一
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j]>array[j+1]) {
                    //位置交換就改為true
                    flag = true;
                    temp = array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
            if (!flag){
                //位置沒有發(fā)生交換說明排序已經(jīng)完成
                break;
            }else{
                //位置發(fā)生改變需要將flag重新置為false以便于下一輪的判斷
                System.out.println("第"+(i+1)+"輪排序的結(jié)果是"+ Arrays.toString(array));
                flag = false;
            }
        }
        return;
    }
}

優(yōu)化后的結(jié)果輸出

第1輪排序的結(jié)果是[1, 2, 3, 4, 5]

Process finished with exit code 0

到此這篇關(guān)于Java冒泡排序及優(yōu)化介紹的文章就介紹到這了,更多相關(guān)Java冒泡排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-plus使用lambda條件構(gòu)造器報錯問題及解決

    MyBatis-plus使用lambda條件構(gòu)造器報錯問題及解決

    這篇文章主要介紹了MyBatis-plus使用lambda條件構(gòu)造器報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 微信游戲打飛機游戲制作(java模擬微信打飛機游戲)

    微信游戲打飛機游戲制作(java模擬微信打飛機游戲)

    java模擬微信打飛機游戲,大家參考使用吧
    2013-12-12
  • Nacos集群數(shù)據(jù)同步方式

    Nacos集群數(shù)據(jù)同步方式

    文章主要介紹了Nacos集群中服務(wù)注冊信息的同步機制,涉及到負責節(jié)點和非負責節(jié)點之間的數(shù)據(jù)同步過程,以及DistroProtocol協(xié)議在同步中的應(yīng)用
    2024-12-12
  • java實現(xiàn)兩個對象之間傳值及簡單的封裝

    java實現(xiàn)兩個對象之間傳值及簡單的封裝

    這篇文章主要介紹了java實現(xiàn)兩個對象之間傳值及簡單的封裝,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java字符串拼接+和StringBuilder的比較與選擇

    Java字符串拼接+和StringBuilder的比較與選擇

    Java 提供了兩種主要的方式:使用 "+" 運算符和使用 StringBuilder 類,本文主要介紹了Java字符串拼接+和StringBuilder的比較與選擇,感興趣的可以了解一下
    2023-10-10
  • Java基礎(chǔ)鞏固系列包裝類代碼實例

    Java基礎(chǔ)鞏固系列包裝類代碼實例

    這篇文章主要介紹了Java包裝類,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-04-04
  • Java線程在什么情況下可以終止

    Java線程在什么情況下可以終止

    Thread線程類自帶的stop方法,但是jdk不建議使用,因為stop方法終止線程只是強行終止,內(nèi)存中部分值可能已發(fā)生變化,并未保證數(shù)據(jù)的一致性,將會導(dǎo)致線程安全問題,那么在什么情況下可以終止線程呢,本篇帶你探究一下
    2022-04-04
  • Spring不能注入Static變量的原因及Spring注入靜態(tài)變量

    Spring不能注入Static變量的原因及Spring注入靜態(tài)變量

    這篇文章主要介紹了Spring不能注入Static變量的原因及Spring注入靜態(tài)變量,需要的朋友可以參考下
    2016-01-01
  • 這一次搞懂SpringMVC原理說明

    這一次搞懂SpringMVC原理說明

    這篇文章主要介紹了這一次搞懂SpringMVC原理說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java幾個重要的關(guān)鍵字詳析

    Java幾個重要的關(guān)鍵字詳析

    這篇文章主要介紹了Java幾個重要的關(guān)鍵字詳析,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考一下,需要的小伙伴可以參考一下,希望對你的學(xué)習有所幫助
    2022-07-07

最新評論

澜沧| 衡南县| 柯坪县| 日喀则市| 永善县| 巴东县| 云浮市| 湘潭市| 洱源县| 巴东县| 车险| 互助| 攀枝花市| 攀枝花市| 桐庐县| 金平| 永新县| 昆山市| 峨眉山市| 彩票| 神农架林区| 宿松县| 曲水县| 宁化县| 如皋市| 镇赉县| 襄樊市| 博爱县| 太康县| 九江县| 无棣县| 酒泉市| 信宜市| 麦盖提县| 漯河市| 临安市| 囊谦县| 晋州市| 根河市| 徐汇区| 汽车|