`
wanglei6744
  • 浏览: 26174 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

python 诠释 归并排序

阅读更多

归并排序 相对简单 归并的含义是将两个或两个以上有序表组合成一个新的有序表:

假设初始序列含有n个记录,则可看成是n个有序的子序列;每个子序列的长度为1,然后两两归并,得到 (n+1)/ 2 个子序列;再两两归并……如此重复,最终得到一个有序序列,这种叫做2路归并,如图所示:

 


代码实现:

 

def merge(list_a, list_b) :
    key_a,key_b = 0, 0
    result = []
    len_a = len(list_a)
    len_b = len(list_b)
    while key_a < len_a and key_b < len_b :
        if list_a[key_a] <= list_b[key_b] :
            result.append(list_a[key_a])
            key_a += 1
        else :
            result.append(list_b[key_b])
            key_b += 1
    while key_a < len_a :
        result.append(list_a[key_a])
        key_a += 1
    while key_b < len_b :
        result.append(list_b[key_b])
        key_b += 1
    return result 

#loop
def merge_sort1(list) :
    length = len(list)
    result = []
    step = 1
    while(step <= (length+1)/2) :
        result = []
        for i in range(0,length,step * 2) :
            max_key = i + 2*step
            result.extend(merge(list[i:i+step],list[i+step:i+step*2]))
        list = result
        step += 1
    return result

#recursion
def merge_sort2(list):
    length = len(list)
    if length == 1 :
        return list
    else : 
        temp_a = merge_sort2(list[0:length/2])
        temp_b = merge_sort2(list[length/2:length])
        return merge(temp_a,temp_b)

if __name__ == '__main__' : 
    list = [49,38,65,97,76,13,27]
    print merge_sort1(list)
    print merge_sort2(list)

 

其中 merge_sort1 采用循环的写法,merge_sort2 采用递归写法,与快速排序和堆排序相比,归并排序是一种稳定的排序方法

  • 大小: 37.1 KB
分享到:
评论
1 楼 最佳蜗牛 2013-09-03  
很好,赞一个。

相关推荐

    python中归并排序源码

    pyhton编写的归并排序是一种高效的快速排序算法,也是python本身内部的排序算法,它不仅时间复杂度小而且简单,符合分而治之的原则,也让很多程序员喜欢,大家快打开看看吧。

    归并排序.py 使用python代码实现

    归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用...

    基于python的归并排序算法设计与实现

    基于python的归并排序算法设计与实现

    python实现归并排序算法代码

    在Python标准库中,归并排序的思想也得到了应用,如list的sort()方法和内置函数sorted()在实现排序时都会使用到归并排序的思想。 归并排序算法不仅在计算机科学领域有着广泛的应用,而且也是许多科技公司面试编程...

    Python实现归并排序.rar

    **Python实现归并排序** 归并排序是一种基于分治策略的高效排序算法,它将大问题分解为小问题来解决,然后再将小问题的结果合并,最终得到完整的解决方案。在Python中,我们可以用简洁的代码来实现这个算法。下面将...

    通过python实现归并排序示例代码.zip

    在Python中实现归并排序,可以通过定义一个递归函数来分解数组,再通过一个辅助函数来合并数组。递归函数负责将数组分成更小的子数组并排序,合并函数则将排序好的子数组合并成一个大的有序数组。Python中列表的切片...

    python-归并排序算法.docx

    以下是一个简单的归并排序Python代码实现: ```python def merge_sort(arr): if len(arr) return arr mid = len(arr) // 2 left = merge_sort(arr[:mid]) right = merge_sort(arr[mid:]) return merge(left,...

    Python归并排序.docx

    ### Python实现归并排序 #### 一、归并排序简介 归并排序(Merge Sort)是一种高效的、基于比较的排序算法。它采用分治法(Divide and Conquer)策略来实现排序。归并排序的基本思想是将待排序的序列分成两部分,...

    python-十大排序算法之归并排序

    python python_十大排序算法之归并排序

    Python3实现归并排序(源代码)

    下面是一个使用Python3实现的归并排序示例代码,该代码详细展示了归并排序的实现过程: ```python def merge_sort(arr): """ 归并排序算法 参数: arr -- 待排序的整数数组 返回值: sorted_arr -- 排序后...

    归并排序在Python中的实现与优化

    在Python中实现归并排序相当直观,但要达到优化和原地排序,需要利用更高级的编程技巧。标准的归并排序算法需要额外的存储空间来暂存排序过程中的数组片段,但这可以通过原地归并排序技术将空间复杂度优化至O(1)。在...

    Python文件操作及多路归并排序

    文件归并排序 命令行说明: sort.py -i &lt;input_filename&gt; -o &lt;output_filename&gt; [-d ] [-c ] [-s ] [-t ] -i 输入源文件名 -o 输出目标文件名,如果未指定,则结果覆盖到源文件 -d 可选项,文件文本行的列分隔符,...

    基于python的排序算法-归并排序Merge Sort

    以下是一个基本的Python归并排序实现示例: ```python def merge_sort(arr): if len(arr) return arr # 分割 mid = len(arr) // 2 left_half = arr[:mid] right_half = arr[mid:] # 征服 left_half = ...

    python实现归并排序算法

    归并排序是典型的分治法的应用 思想:先递归分解数组,再合并数组 原理:将数组分解最小之后,然后合并两个有序数组,基本思想是比较两个数组的最前面的数,谁小就取谁,取完后,将相应的指针后移以为。然后再比较,...

    归并排序算法,python实现,动态图

    详细描述请查看该文章:https://blog.csdn.net/qq_28531269/article/details/122415336?spm=1001.2014.3001.5502

    python实现归并排序 –算法导论

    在Python中实现归并排序,我们可以遵循算法导论中的步骤,首先定义`merge`函数来合并两个已排序的子数组。 在`merge`函数中,我们以四个参数作为输入:原始数组`A`,以及子数组的左右边界`p`、`q`、`r`。通过计算...

    Python 算法 15归并排序思想.mp4

    Python 算法 15归并排序思想.mp4

    Python 算法 16归并排序实现.mp4

    Python 算法 16归并排序实现.mp4

    归并排序python源码.txt

    在Python中实现归并排序,需要编写两个函数:`merge()`和`mergesort()`。`merge()`函数负责将两个已排序的数组(列表)合并成一个有序的数组。`mergesort()`函数则递归地将一个数组分为两个部分,直到每个部分只剩下...

    深入理解归并排序:原理与 Python 实现

    Python语言实现归并排序非常直观,通过定义两个函数来完成排序和合并的操作。`merge_sort`函数负责排序过程,它通过递归调用自身来完成数组的分割,最终调用`merge`函数来完成数组的合并。`merge`函数则专门处理合并...

Global site tag (gtag.js) - Google Analytics