直接選擇排序的排序速度要比冒泡排序快一些,也是常用的排序算法!!!
基本思想
直接選擇排序的基本思路:是指将指定排序位置與其他數組元素分别對比,如果滿足條件就交換元素值,這樣排序好的位置逐漸擴大,最後将整個數組都成為已排序好的格式。
舉例:
有一個國小生,從包含數字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(" ");
}
}