排序算法之直接選擇排序及Java實現

一、排序算法的分類

  1. 選擇排序(直接選擇排序堆排序
  2. 交換排序(冒泡排序快速排序
  3. 插入排序(直接插入排序希爾排序
  4. 歸併排序
  5. 桶式排序
  6. 基數排序

二、直接選擇排序的原理

選擇排序是一種簡單直觀的排序算法,它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。

三、直接選擇排序的實現


public class SelectSort {

    /**
     * 選擇排序
     * 選擇第一個與其後的所有元素進行比較,將最小值放在第一個位置
     * 第一個位置放好之後,再選擇第二個與其後的所有元素進行比較,再將最小值放在第二個位置
     * ...
     * 以此類推,直到最後一個位置也被放置了元素
     * 
     * @param a int數組
     */
    public static void selSort(int a[]){

        if(a==null||a.length==0){
            return;
        }
        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;
        }   
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] test = {2,3,5,4,9,6,7};
        selSort(test);

        for(int i=0; i<test.length; i++){
            System.out.print(test[i] + " ");
        }

    }

}

測試結果:

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