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