【经典排序算法】2. 选择排序

代码如下:

public class Main {

    public static void main(String[] args) {
        int[] arr = {3, 3, 5, 6, 2, 1};
        arrPrint(arr);
        SelectSort(arr);
        arrPrint(arr);
    }

    // 选择排序算法
    // i从头遍历至倒数第二位,当前遍历位i需要替换为最小值,
    // 我们在i之后使指针j遍历至数组末尾,寻找最小的值,最小值索引记录为min
    // (具体做法是每次arr[j]比arr[min]更小,令min更新为j),
    // j循环完成一轮,如果min出现更新,则交换min索引值与i索引值,
    // 即已将最小值排前。
    private static void SelectSort(int[] arr) {
        int len = arr.length;
        for (int i = 0; i < len - 1; i++) {
            int min = i;
            for (int j = i + 1; j < len; j++) {
                if (arr[j] < arr[min])
                    min = j;
            }
            if (min != i) {
                int temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
        }
    }

    // 辅助函数:将int[] 打印出来
    private static void arrPrint(int[] arr) {
        StringBuilder str = new StringBuilder();
        str.append("[");

        for (int v : arr) {
            str.append(v + ", ");
        }
        str.delete(str.length() - 2, str.length());
        str.append("]");
        System.out.println(str.toString());
    }
}

该实例的动画演示如下:
【经典排序算法】2. 选择排序_第1张图片

你可能感兴趣的:(经典排序算法,算法,java,leetcode,数据结构,排序算法)