算法思想:
依次从未排好序的数列中选一个最小的数,把它放到已经排好的序列的一端,这种排序方法叫做直接选择排序。
例如 待排数列为 8 5 9 2 6 从小到大用直接选择排序,各趟结果如下:
初始 8 5 9 2 6
第一趟 2 5 9 8 6 从初始中选出最小的数 2 放在一端 2 和 8 交换 红色为已排好序的数列
第二趟 2 5 9 8 6 从上一趟中未排好序的序列中选一个最小的5 放在已排好序的一端 5原地不动 红色为已排好序的数列
第三趟 2 5 6 8 9 从上一趟中未排好序的序列中选一个最小的6 放在已排好序的一端 6和9交换 红色为已排好序的数列
第四趟 2 5 6 8 9 从上一趟中未排好序的序列中选一个最小的8 放在已排好序的一端 8 原地不动 红色为已排好序的数列
排序结束。
具体实现如下:
package com.sort;
/*
* 直接选择排序算法
* num待排序数组
*
*
* */
public class SelectSort {
public static void selectSort(int[] num){
int i,j,k,temp;
for(i=0;i<num.length;i++){
k=i;
for(j=i+1;j<num.length;j++){
if(num[k]>num[j]){//从无序数组中寻找最小的一个数
k=j;//把最小数的索引给k,然后给i去交换位置
}
}
temp=num[i];
num[i]=num[k];
num[k]=temp;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num={2,3,4234,4,52,12,1212,32442};
selectSort(num);
for(int i=0;i<num.length;i++){
System.out.println(num[i]);
}
}
}