转载请注明出处:http://blog.youkuaiyun.com/droyon/article/details/8790229
/**
* 在一趟比较后选出最小的,交换到前面。
* 比如,第一趟,从1位置开始选择出最小的,跟0位置交换,否则不交换。
* 第二趟,从2位置开始选择出最小数,跟1位置交换,否则不交换。
* 执行n-1次交换,得到顺序序列。
* o(n*n)
* @author
*冒泡排序,选择排序,插入排序,交换排序属于简单排序方法,再简单排序中,选择排序效率最高
*/
public class SelectSort {
private static int[] array = new int[]{1,8,2,9,3,7,11,23,90,4,5};
public static void main(String args[]){
System.out.println("排序前");
printArray();
System.out.println("\n排序后");
selectSort();
printArray();
}
private static void selectSort(){
int minPos;
int temp;
for(int i=0;i<array.length;i++){
temp = array[i];
minPos = i;
for(int j=i+1;j<array.length;j++){
if(array[j]<temp){
temp = array[j];
minPos = j;
}
}
array[minPos] = array[i];
array[i] = temp;
}
}
public static void printArray(){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
结果:
排序前
1 8 2 9 3 7 11 23 90 4 5
排序后
1 2 3 4 5 7 8 9 11 23 90