美文网首页
Python归并排序

Python归并排序

作者: Timeless_ | 来源:发表于2021-10-11 23:30 被阅读0次
def MergeSort(nums):
    """自底向上的二路归并算法"""
    length = 1
    while length < len(nums):
        MergePass(nums, length)
        length *= 2


def MergePass(nums, length):
    """对整个表进行一趟归并"""
    i = 0
    # 归并length长的两相邻子表
    while i+2*length-1 < n:
        merge(nums, i, i+length-1, i+2*length-1)
        i += 2*length
    # 归并余下两个子表,后者长度小于length
    if i+length-1 < n:
        merge(nums, i, i+length-1, len(nums)-1)

def merge(nums, low, mid, high):
    """归并相邻的两个有序表
    low: 第1段的首下标
    mid: 第1段的尾下标
    high: 第2段的尾下标
    """
    tmp = []
    i, j = low, mid+1
    while i <= mid and j <= high:
        if nums[i] <= nums[j]:
            tmp.append(nums[i])
            i += 1
        else:
            tmp.append(nums[j])
            j += 1
    if i <= mid:
        tmp.extend(nums[i:mid+1])
    if j <= high:
        tmp.extend(nums[j:high+1])
    nums[low:high+1] = tmp[:]


x = [1, 2, 34, -1, -9, 0, 2, 13]
MergeSort(x)
print(x)    # [-9, -1, 0, 1, 2, 2, 13, 34]

相关文章

  • Python排序算法有哪几种?

    python排序算法有哪些?python中常见的排序算法有:插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔...

  • python实现归并排序(MergeSort)

    python实现【归并排序】(MergeSort) 算法原理及介绍 归并排序的核心原理是采用分治法(Divide ...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • 第三章:高级排序算法

    归并排序算法(mergeSort) 算法思想:Python使用函数实现: 自底向上的归并排序算法 算法思想:Pyt...

  • 为什么归并排序分两组进行而不是更多?

    归并排序想必大家都不陌生,我之前在学习算法的时候也分享过,见前文Python-排序-归并排序中如何用哨兵来追求极致...

  • 排序

    排序 快速排序 归并排序 计数排序 Python实现 理解 详解 稳定:如果a原本在b前面,而a=b,排序之后a仍...

  • 七大排序算法的 Python

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • 八大排序算法的 Python 实现(转)

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • Python 实现七大排序算法

    本文用 Python 实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。 先整体看一下...

网友评论

      本文标题:Python归并排序

      本文链接:https://www.haomeiwen.com/subject/ydambltx.html