1.原理java
選擇排序和冒泡排序相似,可是選擇排序是採用一個變量來接受 最小值的下標,所以每一趟比較只須要交換一次數組元素便可。
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]ide