原创

排序算法

温馨提示:
本文最后更新于 2025年06月16日,已超过 362 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

冒泡排序

    /**
     * 冒泡排序
     * 时间复杂度: O(n^2)
     * 空间复杂度: O(1)
     * 稳定性: 稳定
     */
    public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            // 定义一个标志位,判断是否已经有序了
            // 若没有发生交换,则已经有序了,直接退出
            boolean flag = true;
            for (int j = 0; j < arr.length - 1 - i; j++) {
                // 当 j 大于 j+1,交换,将较大值换到后面去
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    flag = false;
                    System.out.println(flag);
                }
            }
            if (flag) {
                // 没发生过交换
                break;
            }
        }
    }


直接排序

 /**
     * 直接排序
     * 时间复杂度: O(N^2)
     * 空间复杂度: O(1)
     * 稳定性: 稳定
     *
     * @param arr
     */
    public static void insertSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int temp = arr[i];
            int j = i - 1;
            for (; j >= 0; j--) {
                if (arr[j] > temp) {
                    // 大于 temp,就向后移
                    arr[j + 1] = arr[j];

                } else {
                    // 找到适合的位置,不用再往前找了,直接退出循环
                    break;
                }
            }
            //给找到的位置赋值
            arr[j + 1] = temp;

        }
    }

单例模式-双端检索

public class Singleton{

    private volatile static Singleton instance = null;
    private Singleton() {}

    public static Singleton getInstance() {
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
     }
}
正文到此结束