选择排序算法

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]