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

Java實現(xiàn)冒泡排序示例介紹

 更新時間:2023年04月29日 09:57:33   作者:_Axing  
冒泡排序是一種簡單的排序算法,通過不斷比較相鄰兩個元素的大小,將較大的元素向后移動,最終將最大的元素放到了數(shù)組的末尾。Java中的實現(xiàn)方式是通過嵌套兩層循環(huán),外層循環(huán)控制比較的次數(shù),內層循環(huán)控制每次比較時相鄰元素的比較和交換

何為冒泡排序

冒泡:就像氣泡從水中冒出來一樣

在冒泡排序中,最小數(shù)或最大數(shù)取決于您是按升序還是降序對數(shù)組進行排序,向上冒泡到數(shù)組的開頭或結尾。

算法描述:

  • 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;
  • 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對,這樣在最后的元素應該會是最大的數(shù);
  • 針對所有的元素重復以上的步驟,除了最后一個;
  • 重復步驟1~3,直到排序完成。

如果兩個元素相等,不會再交換位置,所以冒泡排序是一種穩(wěn)定排序算法。

代碼實現(xiàn):

數(shù)組排序

    /*
       對數(shù)組a中的元素進行排序
    */
    public static void sort(Comparable[] a){
        for(int i=a.length-1;i>0;i--){
            for(int j=0;j<i;j++){
                //{6,5,4,3,2,1}
                //比較索引j和索引j+1處的值
                if (greater(a[j],a[j+1])){
                    exch(a,j,j+1);
                }
            }
        }
    }

比較v元素是否大于w元素

    private static  boolean greater(Comparable v,Comparable w){
        return v.compareTo(w)>0;
    }

數(shù)組元素i和j交換位置

    private static void exch(Comparable[] a,int i,int j){
        Comparable temp;
        temp = a[i];
        a[i]=a[j];
        a[j]=temp;
    }

排序類

    public static void bubbleSort(int[] data) {
        int arrayLength = data.length;
        for (int i = 1; i < arrayLength; i++) {//第i次排序
            for (int j = 0; j < arrayLength - i; j++) {//從索引為j的數(shù)開始
                if (data[j] > data[j + 1]) { //相鄰元素兩兩對比
                    int temp = data[j + 1];  // 元素交換
                    data[j + 1] = data[j];
                    data[j] = temp;
                }
            }
            System.out.println("第" + i + "次排序:\n" + java.util.Arrays.toString(data));
        }
    }

完整代碼:

	public class BubbleSort {
    public static void bubbleSort(int[] data) {
        	        int arrayLength = data.length;
        	        for (int i = 1; i < arrayLength; i++) {//第i次排序
        	            for (int j = 0; j < arrayLength - i; j++) {//從索引為j的數(shù)開始
        	                if (data[j] > data[j + 1]) { //相鄰元素兩兩對比
        	                    int temp = data[j + 1];  // 元素交換
        	                    data[j + 1] = data[j];
        	                    data[j] = temp;
        	                }
        	            }
        	            System.out.println("第" + i + "次排序:\n" + java.util.Arrays.toString(data));
        	        }
        	    }
        	    public static void main(String[] args) {
        	        int[] data = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};
        	        System.out.println("排序之前:\n" + java.util.Arrays.toString(data));
        	        bubbleSort(data);
        	        System.out.println("排序之后:\n" + java.util.Arrays.toString(data));
        	    }
        	}

排序之前:

[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]

第1次排序:

[3, 38, 5, 44, 15, 36, 26, 27, 2, 46, 4, 19, 47, 48, 50]

第2次排序:

[3, 5, 38, 15, 36, 26, 27, 2, 44, 4, 19, 46, 47, 48, 50]

第3次排序:

[3, 5, 15, 36, 26, 27, 2, 38, 4, 19, 44, 46, 47, 48, 50]

第4次排序:

[3, 5, 15, 26, 27, 2, 36, 4, 19, 38, 44, 46, 47, 48, 50]

第5次排序:

[3, 5, 15, 26, 2, 27, 4, 19, 36, 38, 44, 46, 47, 48, 50]

第6次排序:

[3, 5, 15, 2, 26, 4, 19, 27, 36, 38, 44, 46, 47, 48, 50]

第7次排序:

[3, 5, 2, 15, 4, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

第8次排序:

[3, 2, 5, 4, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

第9次排序:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

第10次排序:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

第11次排序:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

第12次排序:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

第13次排序:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

第14次排序:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

排序之后:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

Process finished with exit code 0

到此這篇關于Java實現(xiàn)冒泡排序示例介紹的文章就介紹到這了,更多相關Java冒泡排序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java二維碼登錄流程實現(xiàn)代碼(包含短地址生成,含部分代碼)

    Java二維碼登錄流程實現(xiàn)代碼(包含短地址生成,含部分代碼)

    近年來,二維碼的使用越來越風生水起,本篇文章主要介紹了Java二維碼登錄流程實現(xiàn)代碼,其中包含短地址生成,有興趣的可以了解一下。
    2016-12-12
  • Java數(shù)據結構二叉樹難點解析

    Java數(shù)據結構二叉樹難點解析

    樹是一種重要的非線性數(shù)據結構,直觀地看,它是數(shù)據元素(在樹中稱為結點)按分支關系組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示
    2021-10-10
  • 解析springboot包裝controller返回值問題

    解析springboot包裝controller返回值問題

    這篇文章主要介紹了springboot包裝controller返回值問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 詳解Java中List接口底層實現(xiàn)原理

    詳解Java中List接口底層實現(xiàn)原理

    Java是一種廣泛應用的編程語言,被廣泛應用于各種平臺和應用領域,List接口是Java中最重要的數(shù)據結構之一,它為我們提供了一種靈活、高效、可擴展的數(shù)據結構,本篇文章將首先介紹Java中List接口的基本特性和使用方法,然后深入研究List接口的底層實現(xiàn)原理
    2023-11-11
  • spring boot搭建文件服務器解決同時上傳多個圖片和下載的問題

    spring boot搭建文件服務器解決同時上傳多個圖片和下載的問題

    這篇文章主要介紹了spring boot搭建文件服務器解決同時上傳多個圖片和下載的問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • springboot整合mqtt的詳細圖文教程

    springboot整合mqtt的詳細圖文教程

    MQTT是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級”通訊協(xié)議,該協(xié)議構建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布,下面這篇文章主要給大家介紹了關于springboot整合mqtt的詳細圖文教程,需要的朋友可以參考下
    2023-02-02
  • 使用FeignClient設置動態(tài)Url

    使用FeignClient設置動態(tài)Url

    這篇文章主要介紹了使用FeignClient設置動態(tài)Url方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Springcloud seata nacos環(huán)境搭建過程圖解

    Springcloud seata nacos環(huán)境搭建過程圖解

    這篇文章主要介紹了Springcloud seata nacos環(huán)境搭建過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 利用ssh實現(xiàn)服務器文件上傳下載

    利用ssh實現(xiàn)服務器文件上傳下載

    這篇文章主要為大家詳細介紹了如何利用ssh實現(xiàn)服務器文件上傳下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 教你輕松制作java音樂播放器

    教你輕松制作java音樂播放器

    這篇文章主要介紹了如何編寫屬于自己的java音樂播放器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評論

萨迦县| 紫金县| 亚东县| 宜兰市| 都匀市| 彰化县| 墨竹工卡县| 门头沟区| 南城县| 淮阳县| 贡嘎县| 噶尔县| 郯城县| 沈丘县| 壶关县| 海城市| 寻甸| 牙克石市| 青海省| 大理市| 宜阳县| 海林市| 鸡泽县| 湛江市| 九台市| 柞水县| 武城县| 定结县| 隆林| 鄄城县| 时尚| 琼海市| 大兴区| 康平县| 郯城县| 凤山县| 台南县| 永丰县| 云南省| 葵青区| 凤城市|