直接選擇排序基本思想和算法代碼實現

直接選擇排序(Straight Select Sorting) 也是一種簡單的排序方法,它的基本思想是:第一次從R[0]R[n-1]中選取最小值,與R[0]交換,第二次從R[1]R[n-1]中選取最小值,與R[1]交換,…,第i次從R[i-1]R[n-1]中選取最小值,與R[i-1]交換,…,第n-1次從R[n-2]R[n-1]中選取最小值,與R[n-2]交換,總共通過n-1次,得到一個按排序碼從小到大排列的有序序列。
在這裏插入圖片描述
代碼實現(java)

public void selectSortselSort(int a[]){
        for (int i = 0; i < a.length; i++) {
            int tmp = a[i];//存儲遍歷時最小的值
            int flag = i;//存儲最小值的位置
            for(int j = i+1;j<a.length;j++){
                if(a[j]<tmp){
                    //找到更小的值,將值和位置存儲起來
                    tmp = a[j];
                    flag = j;
                }
            }
            int tmp2 = a[i];//臨時保存a[i]的值,用於交換值得位置
            a[i] = tmp;
            a[flag] = tmp2;
        }   
    }
    

在直接選擇排序中,共需要進行n-1次選擇和交換,每次選擇需要進行 n-i 次比較 (1<=i<=n-1),而每次交換最多需要3次移動,因此,總的比較次數C=(n*n - n)/2,由此可知,直接選擇排序的時間複雜度爲 O(n^2) ,所以當記錄佔用字節數較多時,通常比直接插入排序的執行速度快些。
由於在直接選擇排序中存在着不相鄰元素之間的互換,因此,直接選擇排序是一種不穩定的排序方法。

發佈了24 篇原創文章 · 獲贊 4 · 訪問量 3330
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章