本文使用 Java 语言实现四种经典排序算法:冒泡排序、选择排序、插入排序和自底向上的合并排序,并提供伪代码解释。示例代码包含注释,方便理解算法实现细节。

  1. 冒泡排序
// 冒泡排序
public static void bubbleSort(double[] arr) {
    int n = arr.length;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换 arr[j] 和 arr[j+1]
                double temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
  1. 选择排序
// 选择排序
public static void selectionSort(double[] arr) {
    int n = arr.length;
    for (int i = 0; i < n - 1; i++) {
        int minIndex = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        // 将最小元素与当前位置交换
        double temp = arr[minIndex];
        arr[minIndex] = arr[i];
        arr[i] = temp;
    }
}
  1. 插入排序
// 插入排序
public static void insertionSort(double[] arr) {
    int n = arr.length;
    for (int i = 1; i < n; i++) {
        double key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}
  1. 自底向上的合并排序
// 合并排序
public static void mergeSort(double[] arr) {
    int n = arr.length;
    double[] temp = new double[n];
    for (int blockSize = 1; blockSize < n; blockSize *= 2) {
        for (int start = 0; start < n; start += 2 * blockSize) {
            int mid = start + blockSize - 1;
            int end = Math.min(start + 2 * blockSize - 1, n - 1);
            merge(arr, temp, start, mid, end);
        }
    }
}

// 合并两个子数组
public static void merge(double[] arr, double[] temp, int start, int mid, int end) {
    int left = start;
    int right = mid + 1;
    int index = start;

    // 比较左右两个子数组的元素,将较小的元素放入临时数组中
    while (left <= mid && right <= end) {
        if (arr[left] <= arr[right]) {
            temp[index++] = arr[left++];
        } else {
            temp[index++] = arr[right++];
        }
    }

    // 将剩余的元素放入临时数组中
    while (left <= mid) {
        temp[index++] = arr[left++];
    }

    while (right <= end) {
        temp[index++] = arr[right++];
    }

    // 将临时数组中排序好的元素复制回原数组
    for (int i = start; i <= end; i++) {
        arr[i] = temp[i];
    }
}

以上是四种排序算法的 Java 代码实现,欢迎参考。

Java 实现四种排序算法:冒泡排序、选择排序、插入排序和合并排序

原文地址: https://www.cveoy.top/t/topic/pcEd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录