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

JAVA十大排序算法之冒泡排序詳解

 更新時間:2021年08月23日 09:36:14   作者:阿粵Ayue  
這篇文章主要介紹了java中的冒泡排序,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

冒泡排序

1.從數(shù)組頭開始,比較相鄰的元素。如果第一個比第二個大(小),就交換它們兩個

2.對每一對相鄰元素作同樣的工作,從開始第一對到尾部的最后一對,這樣在最后的元素應該會是最大(小)的數(shù)

3.重復步驟1~2,重復次數(shù)等于數(shù)組的長度,直到排序完成

image-20210728113340011

代碼實現(xiàn)

對下面數(shù)組實現(xiàn)排序:{24, 7, 43, 78, 62, 98, 82, 18, 54, 37, 73, 9}

代碼實現(xiàn)

public class BubbleSort {
    public static final int[] ARRAY = {24, 7, 43, 78, 62, 98, 82, 18, 54, 37, 73, 9};
    public static void main(String[] args) {
        print(ARRAY);
        System.out.println("============================================");
        print(sort(ARRAY));
    }
    public static int[] sort(int[] array) {
        if (array.length == 0) {
            return array;
        }
        for (int i = 0; i < array.length; i++) {
            //array.length - 1 -i 已經(jīng)冒泡到合適位置無需在進行排序,減少比較次數(shù)
            for (int j = 0; j < array.length - 1 -i; j++) {
                //前面的數(shù)大于后面的數(shù)交換
                if (array[j + 1] < array[j]) {
                    int temp = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = temp;
                }
            }
        }
        return array;
    }
    public static void print(int[] array) {
        for (int i : array) {
            System.out.print(i + "  ");
        }
        System.out.println("");
    }
}

時間復雜度

對于上面12個數(shù)據(jù)項,從第一個元素開始,第一趟比較了11次,第二趟比較了10次,依次類推,一直到最后一趟,就是:

11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 66次

若有n個元素,則第一趟比較為(n-1)次,第二趟比較為(n-2)次,依次類推:

(n-1) + (n-2) + (n-3) + ...+ 2 + 1 = n * (n-1)/2

在大O表示法中,去掉常數(shù)系數(shù)和低階項,該排序方式的時間復雜度為:O(n2)

算法穩(wěn)定性

假定在待排序的記錄序列中,存在多個具有相同的關(guān)鍵字的記錄,若經(jīng)過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,則稱這種排序算法是穩(wěn)定的;否則稱為不穩(wěn)定的。——百度百科

在代碼中可以看到,array[j + 1] = array[j]的時候,我們可以不移動array[i]和array[j],所以冒泡排序是穩(wěn)定的。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • JavaWeb三大組件之監(jiān)聽器Listener詳解

    JavaWeb三大組件之監(jiān)聽器Listener詳解

    這篇文章主要介紹了JavaWeb三大組件之監(jiān)聽器Listener詳解,在JavaWeb應用程序中,Listener監(jiān)聽器是一種機制,用于監(jiān)聽和響應特定的事件,它可以感知并響應與應用程序相關(guān)的事件,從而執(zhí)行相應的邏輯處理,需要的朋友可以參考下
    2023-10-10
  • JavaWeb實現(xiàn)郵件發(fā)送接收功能

    JavaWeb實現(xiàn)郵件發(fā)送接收功能

    這篇文章主要為大家詳細介紹了JavaWeb郵件發(fā)送接收功能的實現(xiàn),郵件發(fā)送和接收功能是非常常用的功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Javascript和Java語言有什么關(guān)系?兩種語言間的異同比較

    Javascript和Java語言有什么關(guān)系?兩種語言間的異同比較

    雖然Javascript與Java有緊密的聯(lián)系,但卻是兩個公司開發(fā)的不同的兩個產(chǎn)品。那么js和java有什么關(guān)系,兩種語言的不同點是什么呢?介于這兩個問題,小編一起給大家解答下
    2016-09-09
  • Java實現(xiàn)猜字小游戲

    Java實現(xiàn)猜字小游戲

    這篇文章給大家分享小編隨手寫的猜字小游戲,基于java代碼寫的,感興趣的朋友跟隨小編一起看看吧
    2019-11-11
  • 一天時間用Java寫了個飛機大戰(zhàn)游戲,朋友直呼高手

    一天時間用Java寫了個飛機大戰(zhàn)游戲,朋友直呼高手

    前兩天我發(fā)現(xiàn)論壇有兩篇飛機大戰(zhàn)的文章異?;鸨?但都是python寫的,竟然不是我大Java,說實話作為老java選手,我心里是有那么一些失落的,今天特地整理了這篇文章,需要的朋友可以參考下
    2021-05-05
  • 基于Java實現(xiàn)二維碼的生成和解析

    基于Java實現(xiàn)二維碼的生成和解析

    二維碼其實就是一種編碼技術(shù),只是這種編碼技術(shù)是用在圖片上了,將給定的一些文字,數(shù)字轉(zhuǎn)換為一張經(jīng)過特定編碼的圖片。本文將利用Java實現(xiàn)二維碼的生成和解析,需要的可以參考一下
    2022-08-08
  • 對java for 循環(huán)執(zhí)行順序的詳解

    對java for 循環(huán)執(zhí)行順序的詳解

    今天小編就為大家分享一篇對java for 循環(huán)執(zhí)行順序的詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • HashMap每次擴容為什么是2倍

    HashMap每次擴容為什么是2倍

    當HashMap在初始化沒有指定容量的情況下,首次添加元素時,數(shù)組的容量為16;當超出閾值,數(shù)組容量為擴容為之前的2倍,為什么HashMap每次擴容都是之前的2倍?下面就介紹一下
    2024-11-11
  • java 字符串轉(zhuǎn)化為字符數(shù)組的3種實現(xiàn)案例

    java 字符串轉(zhuǎn)化為字符數(shù)組的3種實現(xiàn)案例

    這篇文章主要介紹了java 字符串轉(zhuǎn)化為字符數(shù)組的3種實現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • springboot如何關(guān)掉tomcat容器

    springboot如何關(guān)掉tomcat容器

    這篇文章主要介紹了springboot如何關(guān)掉tomcat容器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

正蓝旗| 布拖县| 贵阳市| 大关县| 五台县| 茂名市| 沈丘县| 南宫市| 泰顺县| 东阳市| 陆河县| 克拉玛依市| 通化市| 沅江市| 衡阳县| 普定县| 宜川县| 淳安县| 宜兰县| 高淳县| 象州县| 白银市| 晋江市| 双流县| 内江市| 孟州市| 瑞安市| 北辰区| 三穗县| 郁南县| 建宁县| 阜平县| 永平县| 安庆市| 临江市| 汕尾市| 玛沁县| 汝南县| 嵩明县| 鹤峰县| 高台县|