溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java冒泡排序?qū)崿F(xiàn)代碼怎么寫

發(fā)布時間:2023-05-05 14:46:34 來源:億速云 閱讀:114 作者:zzz 欄目:開發(fā)技術

這篇文章主要介紹“Java冒泡排序?qū)崿F(xiàn)代碼怎么寫”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java冒泡排序?qū)崿F(xiàn)代碼怎么寫”文章能幫助大家解決問題。

何為冒泡排序

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

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

算法描述:

  • 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;

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

  • 針對所有的元素重復以上的步驟,除了最后一個;

  • 重復步驟1~3,直到排序完成。

Java冒泡排序?qū)崿F(xiàn)代碼怎么寫

如果兩個元素相等,不會再交換位置,所以冒泡排序是一種穩(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冒泡排序?qū)崿F(xiàn)代碼怎么寫”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI