一、实现思想:
例如有以下数字 {3 5 2 6 1 8}
类似以上数字,遍历一遍找个最小值放到0位置上,遍历的数据范围0~n-1
第二次遍历,遍历一遍找个最小值放到1位置上,遍历的数据范围是1~n-1
第三次遍历,遍历一遍找个最小值放到1位置上,遍历的数据范围是2~n-1
二、以下是代码部分
package class01;
import java.util.ArrayList;
public class insertSort {
/**
* 选择排序
* 思想:
* 3 5 2 6 1 8
* 类似以上数字,遍历一遍找个最小值放到0位置上,数据范围0~n-1
* 第二次遍历,遍历一边找个最小值放到1位置上,数据范围0~n-1
* 以此类推
* */
//作为排序的值
public static int [] num = new int[]{3,5,6,1,2,9,7,8};
public static void main(String[] args) {
//先把不用排序的情况洗掉
if(num.length==0||num.length<2){
return;
}
//使用选择排序进行排序
for(int i=0 ;i <num.length ; i++){
//存放最小值下标
int netIndex = i;
for(int j=i+1 ; j<num.length-1;j++){
//如果netindex位置的数字大于j位置上的数字,那么最小值的下标netIndex变为j
netIndex = num[netIndex]>num[j]?j:netIndex;
}
//重新排序数组,最小值下标netIndex,和下标i上的数字交换
swap(num,i,netIndex);
}
for (int i:num){
System.out.println(i+"\r");
}
}
private static void swap(int[] num, int i, int netIndex) {
//交换的时候采用中间值的方式做交换
int tmp = num[i];
num[i] = num[netIndex];
num[netIndex] = tmp;
}
}
小剧场:不积跬步无以至千里