選擇排序法
選擇排序法,分為兩堆數列,一個為排序好的,假如要由小到大排序這個序列
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