考慮到冒泡排序的移動次數o(N^2),選擇排序設置標誌位,每一輪排序只移動一次。
public class SelectSort {
public void selectSort(int[] as){
int min = 0;
for(int i=0;i<as.length;i++){
//設置最小的初始位置
min = i;
for(int j=i+1;j<as.length;j++){
if(as[min]<as[j]){
min = j;
}
}
swap(as,min,i);
}
}
private void swap(int[] as,int aIndex,int bIndex){
int temp = as[aIndex];
as[aIndex] = as[bIndex];
as[bIndex]=temp;
}
private void printDatas(int[] as){
System.out.println("------------------------>");
for(int i:as){
System.out.println(i);
}
}
public static void main(String[] args) {
SelectSort t = new SelectSort();
int[] as = new int[]{3,2,8,6,1};
t.selectSort(as);
t.printDatas(as);
}
}