1. import java.util.Arrays;
    2. public class SelectSort {
    3. public int[] selectSort(int[] arrays){
    4. // 数组不能为null,为null则抛出异常
    5. if(null == arrays){
    6. throw new NullPointerException("arrays is null");
    7. }
    8. // 如果数组长度为0,则返回该空数组
    9. if(!(arrays.length>0)){
    10. return arrays;
    11. }
    12. //将数组进行拷贝,不对原数组做修改
    13. int[] sortArrays = Arrays.copyOf(arrays, arrays.length);
    14. //对拷贝的数组进行排序
    15. sort(sortArrays);
    16. //返回排序后的拷贝的数组
    17. return sortArrays;
    18. }
    19. public void sort(int[] arrays){
    20. //现获取数组的长度,用于循环
    21. int len = arrays.length;
    22. //外部循环,定义我进行选择最小值后,要插入的位置的下标
    23. for(int i = 0;i<len-1;i++){
    24. //定义一个min对象,用于记录找到的最小值的下标
    25. int min = i;
    26. //内部循环,找到要插入位置之后的最小的值的下标
    27. for(int j = i+1;j<len;j++){
    28. // 如果有值小于min位置的值,则将min改变
    29. if(arrays[j]<arrays[min]){
    30. min = j;
    31. }
    32. }
    33. //如果min等于i,说明i位置的值就是最小的,则不用替换
    34. if(min!=i){
    35. //min不等于i,说明i位置不是最小的
    36. //将i位置的值和min位置的值交换,即将最小值放在i
    37. int temp = arrays[i];
    38. arrays[i] = arrays[min];
    39. arrays[min] = temp;
    40. }
    41. }
    42. }
    43. public void println(int [] a) {
    44. for(int x:a) {
    45. System.out.print(" "+x);
    46. }
    47. System.out.println("");
    48. }
    49. public static void main(String[] args) {
    50. int [] array = {9,3,4,12,8,5,6,2,0,11};
    51. SelectSort selectSort = new SelectSort();
    52. selectSort.println(array);
    53. selectSort.println(selectSort.selectSort(array));
    54. }
    55. }