选择排序代码:

    1. public class SelectionSortAlgorithm {
    2. public static void selectionSort(int[] arr){
    3. //如果数组为null,或者数组为空或只有一个元素
    4. if (arr == null || arr.length < 2){
    5. return;
    6. }
    7. for (int start = 0; start < arr.length; start ++){
    8. int minValueIndex = start;
    9. for (int j = start + 1; j < arr.length; j ++){
    10. minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;
    11. }
    12. swap(arr, minValueIndex, start);
    13. }
    14. }
    15. //互换位置,将最小的数置前
    16. public static void swap(int[] arr, int minValueIndex, int start){
    17. int temp = arr[start];
    18. arr[start] = arr[minValueIndex];
    19. arr[minValueIndex] = temp;
    20. }
    21. public static void printArr(int[] arr){
    22. for (int i=0; i < arr.length ; i++){
    23. System.out.print(arr[i] + " ");
    24. }
    25. System.out.println();
    26. }
    27. public static void main(String[] args) {
    28. int[] arr = {7, 2, 3, 8, 4, 1, 6, 1, 9};
    29. //排序前打印一次
    30. printArr(arr);
    31. //排序
    32. selectionSort(arr);
    33. //排序后打印一次
    34. printArr(arr);
    35. }
    36. }

    主要代码部分是

    1. for (int start = 0; start < arr.length; start ++){
    2. int minValueIndex = start;
    3. for (int j = start + 1; j < arr.length; j ++){
    4. minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;
    5. }
    6. swap(arr, minValueIndex, start);
    7. }

    主要排序的思路是:每次将最小(大)的值放置在start开始位置,然后这次的start位置就排好了,不需要改动了。下一次就是从上一次start+1的下标处开始。