1 基本思想
選擇排序的思想是,每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。
2,算法的實現(Java)
package Algorithm;
public class SelectSort {
/**
* @param args
*/
public static void main(String[] args) {
int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};
System.out.println("排序之前:");
out_put.output(data);
System.out.println();
System.out.println("排序之後:");
SelectSort.select_sort(data);
out_put.output(data);
}
public static void select_sort(int[] arr){
if(arr == null || arr.length < 2){
return;
}
int index;//定義下標
for(int i=0;i<arr.length;i++){
index = i;//初始下標爲i
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[index]){
index = j;
}
}
if(index != i){
int temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
}
}
}
}
得到的結果爲:
3 性能分析
選擇排序的時間複雜度爲O(n^2),由於每次選擇僅考慮某一位置上的數據情況,可能會破壞之前數據的相對位置,因此它是一種不穩定的排序方法。