import java.util.Arrays;
public class SelectSort {
public int[] selectSort(int[] arrays){
// 数组不能为null,为null则抛出异常
if(null == arrays){
throw new NullPointerException("arrays is null");
}
// 如果数组长度为0,则返回该空数组
if(!(arrays.length>0)){
return arrays;
}
//将数组进行拷贝,不对原数组做修改
int[] sortArrays = Arrays.copyOf(arrays, arrays.length);
//对拷贝的数组进行排序
sort(sortArrays);
//返回排序后的拷贝的数组
return sortArrays;
}
public void sort(int[] arrays){
//现获取数组的长度,用于循环
int len = arrays.length;
//外部循环,定义我进行选择最小值后,要插入的位置的下标
for(int i = 0;i<len-1;i++){
//定义一个min对象,用于记录找到的最小值的下标
int min = i;
//内部循环,找到要插入位置之后的最小的值的下标
for(int j = i+1;j<len;j++){
// 如果有值小于min位置的值,则将min改变
if(arrays[j]<arrays[min]){
min = j;
}
}
//如果min等于i,说明i位置的值就是最小的,则不用替换
if(min!=i){
//min不等于i,说明i位置不是最小的
//将i位置的值和min位置的值交换,即将最小值放在i
int temp = arrays[i];
arrays[i] = arrays[min];
arrays[min] = temp;
}
}
}
public void println(int [] a) {
for(int x:a) {
System.out.print(" "+x);
}
System.out.println("");
}
public static void main(String[] args) {
int [] array = {9,3,4,12,8,5,6,2,0,11};
SelectSort selectSort = new SelectSort();
selectSort.println(array);
selectSort.println(selectSort.selectSort(array));
}
}