算法描述:
从所有无序元素中找到最小的一个元素,将无序元素中的首元素与最小元素交换位置
交换后,最小元素进入有序区,之后继续以上过程,直到只剩余一个元素
public class selection_sort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] intarry={12,1,90,2,11,9,4,6,13,5,3,33};
selectionsort(intarry);
for(int i:intarry){
System.out.print(i);
System.out.print(",");
}
}
public static void selectionsort(int[] intarry){
for(int i=0;i<intarry.length;i++){
int min=intarry[i];
int minindex=i;
for(int j=i+1;j<intarry.length;j++){
if(min>intarry[j]){
min=intarry[j];
minindex=j;
}
}
intarry[minindex]=intarry[i];
intarry[i]=min;
//打印内循环完成后的中间结果
for(int j:intarry){
System.out.print(j);
System.out.print(",");
}
System.out.println("中间结果");
}
}
}
选择排序的特性是需要进行o(n^2)的排序,与进行o(n)的交换
在所有完全依靠交换来移动元素的排序方法中,选择排序是非常好的。元素交换次数小于冒泡排序,并且小于插入排序。