java數據結構61:冒泡排序

 

61:冒泡排序

總時間限制: 

100ms

 

內存限制: 

32767kB

描述

冒泡排序是一種簡單的排序算法。它重複地走訪過要排序的元素,依次比較相鄰兩個元素,如果他們的順序錯誤就把他們調換過來,直到沒有元素再需要交換,排序完成。這個算法的名字由來是因爲越小(或越大)的元素會經由交換慢慢“浮”到數列的頂端。

  冒泡排序算法的運作如下:

  1. 比較相鄰的元素,如果前一個比後一個大,就把它們兩個調換位置。

  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。

  3. 針對所有的元素重複以上的步驟,除了最後一個。

  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

 

輸入

輸入有2行,第一行是一個整數n,表示第2行會有n個整數。

輸出

輸出對第2行的n個整數每趟選擇排序的結果。

樣例輸入

8
75 23 64 32 54 91 89 17

樣例輸出

23 64 32 54 75 89 17 91 
23 32 54 64 75 17 89 91 
23 32 54 64 17 75 89 91 
23 32 54 17 64 75 89 91 
23 32 17 54 64 75 89 91 
23 17 32 54 64 75 89 91 
17 23 32 54 64 75 89 91 

提示

n個整數,冒泡排序應該執行 n - 1 趟。

 

實現代碼如下:

import java.util.Scanner;

/**
 * @author baikunlong
 * @date 2020/6/23 20:29
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int array[] = new int[n];
        for (int i = 0; i < n; i++) {
            array[i] = scanner.nextInt();
        }

        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length-1-i; j++) {
//                System.out.println(array[j]+":"+array[j+1]);
                if(array[j]>array[j+1]){
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
            for (int k = 0; k < array.length; k++) {
                System.out.print(array[k]+" ");
            }
            System.out.println();
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章