選擇排序算法

      選擇排序算法

1.原理

                  選擇排序和冒泡排序類似,但是選擇排序是採用一個變量來接受
                  最小值的下標,因此每一趟比較只需要交換一次數組元素即可。

2.舉例

                      數組a[]={21,3,44,22},用選擇排序算法升序排序。
                      設置一個變量min來接受最小值下標,min初始值爲0,即a[min]=a[1]
                      第一趟:a[1]與a[min]比,3小於21,於是min=1
                                    a[2]與a[min]比,3小於44,min不變
                                    a[3]與a[min]比,3小於22,min不變
                                    將a[min]與a[0]互換,a[]={3,21,44,22}
                                    選擇出了最小的數3,放在數組第一位,3不參與接下來比較
                                    因此min往後挪一位,min=1
                      第二趟:a[2]與a[min]比,21小於44,min不變
                                    a[3]與a[min]比,21小於22,min不變
                                    將a[min]與a[1]互換,a[]={3,21,44,22}
                                    選擇出了最小的數21放在數組第二位,3和21不參與接下來比較
                                    因此min往後挪一位,min=2
                      第三趟:  a[3]與a[min]比,44大於22,於是min=3
                                   將a[min]與a[2]互換,a[]={3,21,22,44}
                                   排序完畢

3.java代碼

package sort;

import java.util.Arrays;

public class SelectSort {
public static void main(String[] args) {
    int a[]={21,3,44,22};
    selectSort(a);
    System.out.println(Arrays.toString(a));
}
//選擇排序
public static void selectSort(int[] a){
    int min;
    int temp;
    if(a==null||a.length==0){
        return;
    }
    for(int i=0;i<a.length-1;i++){
        min=i;
        for(int j=i+1;j<a.length;j++){
            if(a[j]<a[min]){
                min=j;
            }
        }
        temp=a[min];
        a[min]=a[i];
        a[i]=temp;
    }
}
}

輸出結果:[2, 3, 21, 22, 44]

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