選擇排序

選擇排序是一種原地排序算法,適用於小文件,由於選擇操作是基於鍵值的且交換操作只有在需要的時候進行,所以選擇排序常用於數值較大和鍵值較小的文件。
優點:容易實現;不需要額外的存儲空間
缺點:擴展性差: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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章