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

Java 十大排序算法之冒泡排序刨析

 更新時間:2021年11月18日 09:52:58   作者:龍弟-idea  
冒泡排序是一種簡單的排序算法,它也是一種穩(wěn)定排序算法。其實現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對相鄰的元素,當(dāng)該對元素順序不正確時進行交換。一直重復(fù)這個過程,直到?jīng)]有任何兩個相鄰元素可以交換,就表明完成了排序

冒泡排序原理

①比較相鄰的元素,如果前一個元素比后一個元素大,則交換這兩個元素的位置

②對每一對相鄰的元素循環(huán)上面的步驟,最終最后面的元素就是最大值

冒泡排序API設(shè)計

類名 Bubble
構(gòu)造方法 Bubble:創(chuàng)建Bubble對象
成員方法

1.public static void sort(Comparable[] a):對數(shù)組內(nèi)元素進行排序

2.private static void greater(Comparable v,Comparable w);判斷v是否大于w

3.private static void exchange(Comparable[]  a,int x,int y):交換a數(shù)組中,索引x和索引y處的值

冒泡排序的代碼實現(xiàn)

public class Bubble {
    //對數(shù)組a進行排序
    public static void sort(Comparable[] a){
        for(int i=a.length-1;i>0;i--){
            for(int j=0;j<i;j++){
                if(greater(a[j],a[j+1])){
                    exchange(a,j,j+1);
                }
            }
        }
 
    }
    //比較v元素是否大于w元素
    private static boolean greater(Comparable v,Comparable w){
        return v.compareTo(w)>0;
    }
    //數(shù)組元素x和y交換位置
    private static void exchange(Comparable[] a,int x,int y){
        Comparable t=a[x];
        a[x]=a[y];
        a[y]=t;
    }
}
//測試代碼
 class Test{
    public static void main(String[] args) {
        Integer[] a={4,5,6,3,2,1};
        Bubble.sort(a);
        System.out.println(Arrays.toString(a));
    }
}

測試結(jié)果:

冒泡排序的時間復(fù)雜度分析

冒泡排序雖然采用了雙層for循環(huán)遍歷,但是真正完成排序的代碼在內(nèi)循環(huán)中,所以主要分析內(nèi)層循環(huán)體的執(zhí)行次數(shù)即可

在最壞的情況下。即數(shù)組為{6,5,4,3,2,1}的逆序

元素的比較次數(shù)為:(N-1)+(N-2)+(N-3)+...+2+1=

((N-1)+1)*(N-1)/2=N^2/2-N/2;

元素的交換次數(shù)為:(N-1)+(N-2)+(N-3)+...+2+1=

((N-1)+1)*(N-1)/2=N^2/2-N/2;

總執(zhí)行次數(shù)為:2*(N^2/2-N/2)=N^2-N;

根據(jù)大O推導(dǎo)法則,保留最高階項,即冒泡排序的時間復(fù)雜度為O(N^2)

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

相關(guān)文章

  • SpringBoot定時調(diào)度之Timer與Quartz詳解

    SpringBoot定時調(diào)度之Timer與Quartz詳解

    Java?中常用的定時調(diào)度框架有以下幾種:Timer、ScheduledExecutorService、Spring?Task和Quartz,本文主要來和大家講講他們的具體使用,需要的可以參考一下
    2023-06-06
  • Java多線程之ThreadLocal原理總結(jié)

    Java多線程之ThreadLocal原理總結(jié)

    這篇文章主要介紹了Java多線程ThreadLocal原理,同一個ThreadLocal所包含的對象,在不同的Thread中有不同的副本,文章中有詳細的代碼示例,需要的朋友參考一下
    2023-04-04
  • 實例講解Java并發(fā)編程之ThreadLocal類

    實例講解Java并發(fā)編程之ThreadLocal類

    這篇文章主要介紹了實例講解Java并發(fā)編程之ThreadLocal類,本文給出了模擬ThreadLocal、實用ThreadLocal等代碼實例,需要的朋友可以參考下
    2015-04-04
  • Java ArrayList.add 的實現(xiàn)方法

    Java ArrayList.add 的實現(xiàn)方法

    這篇文章主要介紹了Java ArrayList.add 的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • springBoot加入thymeleaf模板的方式

    springBoot加入thymeleaf模板的方式

    這篇文章主要介紹了springBoot加入thymeleaf模板的方式,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 詳解java解決分布式環(huán)境中高并發(fā)環(huán)境下數(shù)據(jù)插入重復(fù)問題

    詳解java解決分布式環(huán)境中高并發(fā)環(huán)境下數(shù)據(jù)插入重復(fù)問題

    這篇文章主要介紹了java解決并發(fā)數(shù)據(jù)重復(fù)問題 ,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • java使用三層架構(gòu)實現(xiàn)電影購票系統(tǒng)

    java使用三層架構(gòu)實現(xiàn)電影購票系統(tǒng)

    這篇文章主要為大家詳細介紹了java使用三層架構(gòu)實現(xiàn)電影購票系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Spring MVC異常處理機制示例詳解

    Spring MVC異常處理機制示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring MVC異常處理機制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring MVC具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java中的PowerMock使用實踐

    Java中的PowerMock使用實踐

    這篇文章主要介紹了Java中的PowerMock使用實踐,@PrepareForTest和@RunWith是成對出現(xiàn)的,一般@RunWith(PowerMockRunner.class),@PrepareForTest的值是引用的靜態(tài)方法或私有方法的類,需要的朋友可以參考下
    2023-12-12
  • Mybatis-Plus中的條件參數(shù)使用

    Mybatis-Plus中的條件參數(shù)使用

    這篇文章主要介紹了Mybatis-Plus中的條件參數(shù)使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論

博罗县| 长寿区| 衡阳市| 五华县| 姜堰市| 阿荣旗| 阜阳市| 炎陵县| 锦州市| 天全县| 永昌县| 漳平市| 潮州市| 鱼台县| 宽城| 鄂伦春自治旗| 衡南县| 澄迈县| 农安县| 上林县| 鲁甸县| 都江堰市| 大厂| 堆龙德庆县| 钦州市| 永川市| 海伦市| 平利县| 巩留县| 行唐县| 祁东县| 天津市| 若尔盖县| 汕尾市| 东城区| 汉沽区| 嘉义县| 万宁市| 通州区| 镇平县| 北海市|