選擇排序是一種原地排序算法,適用於小文件,由於選擇操作是基於鍵值的且交換操作只有在需要的時候進行,所以選擇排序常用於數值較大和鍵值較小的文件。
優點:容易實現;不需要額外的存儲空間
缺點:擴展性差:O(n^2)
算法思想:
尋找序列中的最小值,
用當前的值交換最小值
對所有的元素重複以上過程,知道整個序列排序完成
void Selection(int []array){
int i,j,min,temp;
for(i=0;i<array.length-1;i++) {
min=i;
for(j=i+1;j<array.length;j++) {
if(array[j]<array[min]) {
min=j;
}
temp=array[min];
array[min]=array[i];
array[i]=temp;
}
}
}
最壞情況的時間複雜度:O(n^2)
最好情況的時間複雜度:O(n)
平均情況的時間複雜度:O(n^2)
最壞情況的空間複雜度:O(1)