十大排序算法——3种归并排序

这篇博客介绍了归并排序的三种实现方式:原地归并、自顶向下的归并排序和自底向上的归并排序。归并排序利用分治思想,通过递归将数组不断分割并合并,达到排序的目的。虽然其空间复杂度较高,但在大规模数据排序中表现出色。文章详细阐述了每种方法的原理和优缺点,并指出在特定情况下,自底向上的归并排序更适用于链表组织的数据。
摘要由CSDN通过智能技术生成
归并排序
  • 典型的分治思想

  • 递归排序算法:先递归地将其分成两半分别排序,然后将结果归并起来。

  • 时间上(优):能保证长度为N的数组排序所需时间和NlogN成正比,就能将一个庞大的数组排序,可以处理数百万甚至更大规模的数组。(这是插入排序或选择排序做不到的)

  • 空间上(劣):所需的额外空间和N成正比

  • 归并排序是一种渐进最优的基于比较排序的算法

1. 原地归并的抽象方法

思想:将子数组a[lo…mid]和a[mid+1…hi]归并成一个有序的数组并将结果存放在a[lo…hi]中。它将涉及的所有元素复制到一个辅助数组中,再把归并的结果放回原数组。

原地归并的抽象方法轨迹

private static Comparable[] aux; //归并所需的辅助数组

public static void merge(Comparable[] a,int lo,int mid,int hi){
   
    //将a[lo..mid]和a[mid+1..hi]归并
    aux = new Comparable[a.length];
    int i = lo, j = mid+1;

    for (int k=lo; k<=hi;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值