首頁  >  文章  >  Java  >  冒泡排序演算法由一個什麼循環控制?

冒泡排序演算法由一個什麼循環控制?

藏色散人
藏色散人轉載
2019-04-10 16:51:413930瀏覽

本篇文章主要跟大家介紹冒泡排序由一個什麼循環控制的,那麼冒泡排序演算法可以由雙層for迴圈實現,也可以由單一for迴圈實現。下面我們就結合具體的程式碼範例,跟大家介紹冒泡排序的實作方法!

一、什麼叫冒泡排序法?

 比較鄰近的元素,如果第一個比第二個大,就交換他們兩個的位置,然後繼續往下找

二、兩種冒泡排序法步驟:

將下列陣列進行排序:(22,3,6,54,86,21,35,1,65,4)

#1.普通的冒泡排序法:

實作步驟:

1:雙層for迴圈嵌套;

2.判斷條件如果滿足,交換兩數位置;

public class BubbleSort {
    public static void main(String[] args) {
        
        int a[]={22,3,6,54,86,21,35,1,65,4};
        
        for(int i= 0 ;i<a.length;i++){    //第一层循环
            for(int j=0;j<a.length-i-1;j++){    //第二层循环
                if(a[j]>a[j+1]){  
                                  //交换位置
                    int tem =a[j];
                    a[j]=a[j+1];
                    a[j+1]=tem;
                }
            }
        }
        System.out.println("排好序:");
        for(int aa:a){
            System.out.print(aa+" ");
        }
    }
}

結果顯示:

冒泡排序演算法由一個什麼循環控制?

#雙層for迴圈實作冒泡排序法

2.單一for迴圈實作冒泡排序法:

a.)定義待排序數組及陣列相關長度

int a[]={22,3,6,54,86,21,35,1,65,4};
  int team=a.length-1;

b.)排序實作:

1.單一for迴圈;

2. 判斷是否應該交換位置;

for(int i= 0 ;i<team;i++){
        if(a[i]>a[i+1]){
        int tem =a[i];
        a[i]=a[i+1];
        a[i+1]=tem;
        }
}

3. 判斷該行程for迴圈是否結束;

4.若該趟for迴圈結束將給i賦值-1,並且將team的長度減1,繼續下一個循環;

if(i==team-1){
            i=-1;
            team--;
}

c.)完整程序:

//单个for循环的冒泡排序法
public class BubbleSort {
    public static void main(String[] args) {
        
    int a[]={22,3,6,54,86,21,35,1,65,4};
    int team=a.length-1;
    for(int i= 0 ;i<team;i++){
        if(a[i]>a[i+1]){
        int tem =a[i];
        a[i]=a[i+1];
        a[i+1]=tem;
        }
        if(i==team-1){
            i=-1;
            team--;
        }
    }
    System.out.println("排好序:");
    for(int aa:a){
        System.out.print(aa+" ");
    }
    }
}

結果顯示:

冒泡排序演算法由一個什麼循環控制?

單一for迴圈實作冒泡排序

本文來自PHP中文網,更多相關知識點請前往PHP中文網影片課程頻道!

以上是冒泡排序演算法由一個什麼循環控制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jianshu.com。如有侵權,請聯絡admin@php.cn刪除