1. 程式人生 > >《JAVA》淺談——氣泡排序

《JAVA》淺談——氣泡排序

 

 

氣泡排序:是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

演算法規則:由於演算法每次都將一個最大的元素往上冒,我們可以將待排序集合(0...n)看成兩部分,一部分為(k..n)的待排序unsorted集合,另一部分為(0...k)的已排序sorted集合,每一次都在unsorted集合從前往後遍歷,選出一個數,如果這個數比其後面的數大,則進行交換。完成一輪之後,就肯定能將這一輪unsorted集合中最大的數移動到集合的最後,並且將這個數從unsorted中刪除,移入sorted中。

程式碼實現(Java版本)

public void sort(int[] args) 
        {
        	//第一層迴圈從陣列的最後往前遍歷
    		for (int i = args.length - 1; i > 0 ; --i) {
                //這裡迴圈的上界是 i - 1,在這裡體現出 “將每一趟排序選出來的最大的數從sorted中移除”
    			for (int j = 0; j < i; j++) {
                    //保證在相鄰的兩個數中比較選出最大的並且進行交換(冒泡過程)
    				if (args[j] > args[j+1]) {
    					int temp = args[j];
    					args[j] = args[j+1];
    					args[j+1] = temp;
    				}
    			}
    		}
	    }