归并排序java实现的方法是什么

归并排序(Merge Sort)是一种分治算法,它的基本思想是将待排序的序列分成两部分,分别对这两部分进行排序,然后将排序后的两个子序列合并成一个有序序列。以下是使用Java实现的归并排序方法:public class MergeSort {public static void main(String[] args) {int[] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1

归并排序(Merge Sort)是一种分治算法,它的基本思想是将待排序的序列分成两部分,分别对这两部分进行排序,然后将排序后的两个子序列合并成一个有序序列。以下是使用Java实现的归并排序方法:

public class MergeSort {
    public static void main(String[] args) {
        int[] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1};
        mergeSort(arr, 0, arr.length - 1);
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }

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

    public static void merge(int[] arr, int left, int mid, int right) {
        int[] temp = new int[right - left + 1]; // 创建一个临时数组,用于存储合并后的有序序列
        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 p = 0; p < temp.length; p++) {
            arr[left + p] = temp[p];
        }
    }
}

这段代码定义了一个mergeSort方法,它接受一个整数数组、左边界和右边界作为参数。在main方法中,我们创建了一个待排序的数组,并调用mergeSort方法对其进行排序。最后,我们遍历并打印排序后的数组。

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

(0)
派派
上一篇 2024-11-30
下一篇 2024-11-30

相关推荐

  • redis flushall的操作是否会阻塞

    Redis 的 FLUSHALL 操作会阻塞 Redis 服务器,直到操作完成为止。具体来说,FLUSHALL 命令会清空数据库中的所有键值对,这个过程是不可逆的。在执行此命令时,如果有客户端尝试执行其他命令,这些命令将被阻塞,直到 FLUSHALL 操作完成。需要注意的是,FLUSHALL 是一个危险的操作,因为它会导致数据丢失。在执行此命令之前,请确保已经备份了所有重要数据,或者确认不再需要

    2024-11-07
    0
  • 「域名的偿还期是什么意思」域名到期是什么意思

    域名的偿还期是什么意思,域名到期是什么意思 内容导航: 网络域名为什么要有一个偿还期 低谷期是什么意思 cn英文域名到期第64天被注册了请问是高价偿还期吗有没有会的 借款偿还期是什…

    2022-08-15
    0
  • go语言中range的使用方法是什么

    在Go语言中,range关键字用于迭代数组、切片、通道或映射,并返回索引和元素值。具体用法如下所示:用于迭代数组或切片:arr := []int{1, 2, 3, 4, 5}for index, value := range arr {fmt.Printf(“Index: %d, Value: %d\n”, index, value)}用于迭代映射:m := map[string]int{“a”

    2024-03-22
    0
  • 便宜的云虚拟主机有什么优势

    便宜的云虚拟主机有以下优势:价格低廉:便宜的云虚拟主机通常价格较低,适合个人用户或小型企业使用,节省成本。灵活性:云虚拟主机可以根据实际需求灵活调整配置,满足不同用户的需求。可靠性:大多数云虚拟主机服务提供商会提供高可靠性的服务,保证用户的网站稳定运行。扩展性:用户可以根据网站流量的增长来随时扩展虚拟主机的资源,保证网站的稳定运行。管理方便:云虚拟主机通常提供简单易用的管理工具,用户可以方便地管理

    2024-06-07
    0
  • iptables下MySQL安全防护怎么做

    在使用iptables进行MySQL安全防护时,主要目标是限制不必要的网络访问,只允许特定的IP地址或IP段访问MySQL服务器,并禁用root用户的远程登录。以下是一些具体的步骤和建议:允许特定IP地址或IP段访问MySQL:使用iptables -A INPUT -p tcp -s 你的允许的IP地址或IP段 –dport 3306 -j ACCEPT命令来允许特定的IP地址或IP段访问My

    2024-10-02
    0
  • Oracle Rose在项目中的实际应用案例

    Oracle Rose并非一个真实存在的产品或解决方案。可能您指的是Oracle的Rose系列产品,如RoseMirrorHA等,这些产品在多个行业中有着广泛的应用。以下是两个具体的应用案例:区域卫生信息平台案例项目简介:某地市卫生局规划建设区域卫生信息平台,旨在建立市级的医院管理系统数据中心,实现居民健康信息、公共卫生工作信息、保健诊疗信息的联系保存、数据共享和信息利用。解决方案:采用Ros

    2024-09-10
    0

发表回复

登录后才能评论