天天看點

直接選擇排序—數組排序方法

直接選擇排序的排序速度要比冒泡排序快一些,也是常用的排序算法!!!

基本思想

直接選擇排序的基本思路:是指将指定排序位置與其他數組元素分别對比,如果滿足條件就交換元素值,這樣排序好的位置逐漸擴大,最後将整個數組都成為已排序好的格式。

舉例:

有一個國小生,從包含數字1-10的亂序的數字堆中選擇合适的數字,組成一個1-10的排序,而這個學生首先從數字堆中選出1,放在第一位,然後選擇數字2(注意此時數字堆裡面已經沒有1了),放在第二位,依次類推,直到找到數字9,放在8的後面,最後剩下10,就不用選擇了,直接放在最後就好啦。

算法實作

/*
 * 直接選擇排序算法的實作
 * 
 */
public class 直接選擇排序 {

	public static void main(String[] args) {
		int[] array = {42,12,56,33,1,3,45};
		//建立直接排序類的對象
		直接選擇排序 sorter = new 直接選擇排序();
		//調用排序對象的方法将數組排序
		sorter.sort(array);
	}
	/*
	 * 直接選擇排序
	 * @param array
	 *        要排序的數組
	 */
	public void sort(int[] array) {
		int index;
		for(int i=1;i<array.length;i++) {
			index = 0;
			for(int j=1;j<=array.length-i;j++) {
				if(array[j]>array[index]) {
					index = j;
				}
			}
			//交換在位置array.length-i 和index(最大值)上的兩個數
			int temp =array[array.length-i];//把第一個元素值儲存到臨時變量中
			array[array.length-i]=array[index];//把第二個元素儲存到第一個元素單元中
			array[index] = temp;//把臨時變量也就是第一個元素原值儲存到第二個元素中
		}
		showArray(array);
	}
/*
 * 顯示數組中低端所有元素
 * @param array
 *        要顯示的數組
 */
	public void showArray(int[] array) {
		for(int i:array) {
			System.out.print(">"+i);
		}
		System.out.print(" ");
	}
}