選擇排序法


選擇排序法,分為兩堆數列,一個為排序好的,假如要由小到大排序這個序列

2 5 6 8 7 9 4 1 3
  • 搜尋整個位排序好的數列,找到裡面最小的數值
  • 將找到的最小數值,與未排序數列的第一個數交換
  • 此時已排序好數列的長度可以新增一,而未排序數列的長度可以減一

有底線的為排序好的數列

1 5 6 8 7 9 4 2 3
-
1 2 6 8 7 9 4 5 3
---
1 2 3 8 7 9 4 5 6
-----
1 2 3 4 7 9 8 5 6
-------
1 2 3 4 5 9 8 7 6
---------
1 2 3 4 5 6 8 7 9
-----------
1 2 3 4 5 6 7 8 9
-------------
1 2 3 4 5 6 7 8 9
---------------
1 2 3 4 5 6 7 8 9
-----------------
//PURPOSE:selection sort由小到大排序數列
public static void main(String[] args){
    int[] value={2,5,6,8,7,9,4,1,3};
    int firstIndex=0;//未排序數列的第一個數的索引
    int min;
    int minIndex;
    while(firstIndex!=value.length){
        //先將最小數設為未排序第一個數
        min=value[firstIndex];
        minIndex=firstIndex;
        //找出未排序數列最小的數丟進MIN裡
        for(int i=firstIndex;i<value.length;i++){
            if(value[i]<min){
                min=value[i];
                minIndex=i;
            }
        }
        //交換first和min
        int z=value[firstIndex];
        value[firstIndex]=min;
        value[minIndex]=z;
        //未排序數列又縮減一個,從開始位置的下一個開始
        firstIndex++;
    }
    for(int i:value){
        System.out.print(i+" ");
    }
}
----------------------------
1 2 3 4 5 6 7 8 9

results matching ""

    No results matching ""