归并排序算法

归并排序算法详解

归并排序算法

归并排序的核心思想是分治:将数组不断分割成更小的子数组,直到每个子数组只包含一个元素(此时已排序),然后逐步合并这些子数组,在合并过程中完成排序。排序发生在合并阶段,而非分割阶段。

图解归并排序

首先,我们有一个待排序的数组:

归并排序算法

将其分成两个子数组:

归并排序算法

继续递归分割,直到每个子数组只有一个元素:

归并排序算法

接下来是合并和排序阶段,每次合并两个已排序的子数组,得到一个新的已排序的数组:

算家云 算家云

高效、便捷的人工智能算力服务平台

算家云 37 查看详情 算家云

归并排序算法

最终得到完全排序的数组:

归并排序算法

Java代码实现及优化

初始代码存在效率问题,主要体现在数组元素的复制和合并逻辑上。以下提供优化后的代码:

import java.util.Arrays;public static void mergeSort(int[] array) {    int n = array.length;    if (n < 2) {        return; // 数组长度小于2,无需排序    }    int middle = n / 2;    int[] left = Arrays.copyOfRange(array, 0, middle);    int[] right = Arrays.copyOfRange(array, middle, n);    mergeSort(left);    mergeSort(right);    int i = 0, j = 0, k = 0;    while (i < left.length && j < right.length) {        if (left[i] <= right[j]) {            array[k++] = left[i++];        } else {            array[k++] = right[j++];        }    }    while (i < left.length) {        array[k++] = left[i++];    }    while (j < right.length) {        array[k++] = right[j++];    }}

此优化版本使用Arrays.copyOfRange()高效地复制数组,并简化了合并过程中的比较和赋值逻辑,提高了代码的可读性和效率。

祝您学习愉快!

以上就是归并排序算法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/284611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 17:58:43
下一篇 2025年11月4日 17:59:34

相关推荐

发表回复

登录后才能评论
关注微信