1. 程式人生 > >java中陣列常見的排序問題整理

java中陣列常見的排序問題整理

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">java中一般的常見的排序問題:</span>

1.選擇排序:選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

如圖所示:陣列array有5個元素

首先,array[0]與array[1]比較大小,如果array[0]>array[1],則將兩元素互換位置,然後再將array[0]與array[2]進行比較,一次進行下去,當第一輪迴圈完成,則array[0]是陣列中最小的元素。然後開始拿array[1]與array[2]進行比較,依次下去,比較到最後即可。

程式程式碼實現如下:

public void SelectionSort(int[] array){
		for(int i=0;i<array.length-1;i++){
			for(int j=i+1;j<array.length;j++){
				int temp;
				if(array[i]>array[j]){
					temp = array[i];
					array[i]=array[j];
					array[j]=temp;
				}
			}
		}
	}
2.氣泡排序:它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。下面用一張圖來詳細說明冒泡的原理。如圖:

陣列array有五個元素,int[] array={7,5,12,9,2};

第一步還是和選擇排序一樣,先是array[0]和array[1]進行比較,如果array[0]>array[1],兩個元素互換位置,即array[0]=5,array[1]=7;第二步,array[1]和array[2]進行比較大小,array[1]<array[2],位置不變;第三步,array[2]和array[3]比較,array[2]>array[3],位置互換;array[3]與array[4]比較,array[3]>array[4],位置互換,第一輪迴圈結束,我們會發現,陣列的最後一個元素是陣列中值最大的。第一輪迴圈完成後的陣列變成如下圖所示:


接下來繼續又從array[0]和array[1]開始比較,重複下去。第一輪比較得出了最大值,第二輪比較得出第二大的值,依次下去,陣列排序完成。

具體的程式碼實現如下:

public static void bubbleSort(int[] array){
		for(int i=0;i<array.length;i++){
			for(int j=0;j<array.length-i-1;j++){
				if(array[j]>array[j+1]){
					int temp=array[j+1];
					array[j+1]=array[j];
					array[j]=temp;
				}
			}
		}
	}