java实现归并排序

简介: java实现归并排序

public class MergeSort {
public static void mergeSort(int[] array) {
if (array.length <= 1) {
return;
}

    int mid = array.length / 2;

    // 分割原始数组为两个子数组
    int[] leftArray = new int[mid];
    int[] rightArray = new int[array.length - mid];
    System.arraycopy(array, 0, leftArray, 0, mid);
    System.arraycopy(array, mid, rightArray, 0, array.length - mid);

    // 递归对子数组进行归并排序
    mergeSort(leftArray);
    mergeSort(rightArray);

    // 合并两个有序子数组
    merge(leftArray, rightArray, array);
}

private static void merge(int[] leftArray, int[] rightArray, int[] mergedArray) {
    int leftLength = leftArray.length;
    int rightLength = rightArray.length;
    int i = 0, j = 0, k = 0;

    while (i < leftLength && j < rightLength) {
        if (leftArray[i] <= rightArray[j]) {
            mergedArray[k++] = leftArray[i++];
        } else {
            mergedArray[k++] = rightArray[j++];
        }
    }

    while (i < leftLength) {
        mergedArray[k++] = leftArray[i++];
    }

    while (j < rightLength) {
        mergedArray[k++] = rightArray[j++];
    }
}

public static void main(String[] args) {
    int[] array = {9, 5, 7, 1, 3, 6, 2, 8, 4};
    System.out.println("原始数组:");
    printArray(array);

    mergeSort(array);

    System.out.println("排序后数组:");
    printArray(array);
}

private static void printArray(int[] array) {
    for (int i : array) {
        System.out.print(i + " ");
    }
    System.out.println();
}

}

目录
相关文章
|
5月前
|
存储 搜索推荐 算法
Java代码归并排序
Java代码归并排序
27 0
|
2月前
|
搜索推荐 Java
|
2月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
24 0
|
4月前
|
Java
归并排序(java)
归并排序(java)
|
4月前
|
搜索推荐 算法 Java
Java中的快速排序、归并排序和堆排序是常见的排序算法。
【6月更文挑战第21天】Java中的快速排序、归并排序和堆排序是常见的排序算法。快速排序采用分治,以基准元素划分数组并递归排序;归并排序同样分治,先分割再合并有序子数组;堆排序通过构建堆来排序,保持堆性质并交换堆顶元素。每种算法各有优劣:快排平均高效,最坏O(n²);归并稳定O(n log n)但需额外空间;堆排序O(n log n)且原地排序,但不稳定。
37 3
|
5月前
|
算法 Java
<八大排序>万字详解(Java实现).插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序...
<八大排序>万字详解(Java实现).插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序
25 0
|
5月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序
|
算法 Java
java实现归并排序
java实现归并排序
53 0
|
5月前
|
Java
使用Java实现合并两个数组[归并排序]
使用Java实现合并两个数组[归并排序]
|
12月前
|
存储 搜索推荐 Java
深入了解归并排序:原理、性能分析与 Java 实现
归并排序(Merge Sort)是一种高效且稳定的排序算法,其优雅的分治策略使它成为排序领域的一颗明珠。它的核心思想是将一个未排序的数组分割成两个子数组,然后递归地对子数组进行排序,最后将这些排好序的子数组合并起来。
135 1
深入了解归并排序:原理、性能分析与 Java 实现