首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Java中实现合并排序:仅为零

在Java中实现合并排序是一种常见的排序算法,它通过将待排序的数组递归地分成两半,然后对两个子数组分别进行排序,最后将两个有序的子数组合并成一个有序的数组。

下面是一个简单的Java代码示例,实现了合并排序算法:

代码语言:java
复制
public class MergeSort {
    public static void mergeSort(int[] arr) {
        if (arr == null || arr.length <= 1) {
            return;
        }
        int[] temp = new int[arr.length];
        mergeSort(arr, 0, arr.length - 1, temp);
    }

    private static void mergeSort(int[] arr, int left, int right, int[] temp) {
        if (left < right) {
            int mid = (left + right) / 2;
            mergeSort(arr, left, mid, temp); // 对左半部分进行排序
            mergeSort(arr, mid + 1, right, temp); // 对右半部分进行排序
            merge(arr, left, mid, right, temp); // 合并左右两部分
        }
    }

    private static void merge(int[] arr, int left, int mid, int right, int[] temp) {
        int i = left; // 左半部分的起始索引
        int j = mid + 1; // 右半部分的起始索引
        int k = 0; // 临时数组的起始索引

        // 将左右两部分按照从小到大的顺序合并到临时数组中
        while (i <= mid && j <= right) {
            if (arr[i] <= arr[j]) {
                temp[k++] = arr[i++];
            } else {
                temp[k++] = arr[j++];
            }
        }

        // 将剩余的元素依次放入临时数组中
        while (i <= mid) {
            temp[k++] = arr[i++];
        }
        while (j <= right) {
            temp[k++] = arr[j++];
        }

        // 将临时数组中的元素复制回原数组
        for (int m = 0; m < k; m++) {
            arr[left + m] = temp[m];
        }
    }

    public static void main(String[] args) {
        int[] arr = {9, 5, 7, 2, 4, 1, 6, 8, 3};
        mergeSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

合并排序的优势在于其稳定性和可靠性,时间复杂度为O(nlogn),适用于各种规模的数据排序。

在腾讯云中,可以使用云服务器(CVM)来运行Java程序,云数据库MySQL(CDB)来存储数据,云函数(SCF)来实现函数计算等。具体的产品和介绍链接如下:

以上是关于在Java中实现合并排序的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

33分30秒

Java零基础-299-多态在开发中的作用

9分4秒

Java零基础-300-总结多态在开发中的作用

13分55秒

day24_集合/09-尚硅谷-Java语言高级-HashMap在JDK7中的底层实现原理

5分47秒

day24_集合/10-尚硅谷-Java语言高级-HashMap在JDK8中的底层实现原理

13分55秒

day24_集合/09-尚硅谷-Java语言高级-HashMap在JDK7中的底层实现原理

5分47秒

day24_集合/10-尚硅谷-Java语言高级-HashMap在JDK8中的底层实现原理

13分55秒

day24_集合/09-尚硅谷-Java语言高级-HashMap在JDK7中的底层实现原理

5分47秒

day24_集合/10-尚硅谷-Java语言高级-HashMap在JDK8中的底层实现原理

13分17秒

002-JDK动态代理-代理的特点

15分4秒

004-JDK动态代理-静态代理接口和目标类创建

9分38秒

006-JDK动态代理-静态优缺点

10分50秒

008-JDK动态代理-复习动态代理

领券