归并排序 相对简单 归并的含义是将两个或两个以上有序表组合成一个新的有序表:
假设初始序列含有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
分享到:
相关推荐
pyhton编写的归并排序是一种高效的快速排序算法,也是python本身内部的排序算法,它不仅时间复杂度小而且简单,符合分而治之的原则,也让很多程序员喜欢,大家快打开看看吧。
归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用...
基于python的归并排序算法设计与实现
在Python标准库中,归并排序的思想也得到了应用,如list的sort()方法和内置函数sorted()在实现排序时都会使用到归并排序的思想。 归并排序算法不仅在计算机科学领域有着广泛的应用,而且也是许多科技公司面试编程...
**Python实现归并排序** 归并排序是一种基于分治策略的高效排序算法,它将大问题分解为小问题来解决,然后再将小问题的结果合并,最终得到完整的解决方案。在Python中,我们可以用简洁的代码来实现这个算法。下面将...
在Python中实现归并排序,可以通过定义一个递归函数来分解数组,再通过一个辅助函数来合并数组。递归函数负责将数组分成更小的子数组并排序,合并函数则将排序好的子数组合并成一个大的有序数组。Python中列表的切片...
以下是一个简单的归并排序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实现归并排序 #### 一、归并排序简介 归并排序(Merge Sort)是一种高效的、基于比较的排序算法。它采用分治法(Divide and Conquer)策略来实现排序。归并排序的基本思想是将待排序的序列分成两部分,...
python python_十大排序算法之归并排序
下面是一个使用Python3实现的归并排序示例代码,该代码详细展示了归并排序的实现过程: ```python def merge_sort(arr): """ 归并排序算法 参数: arr -- 待排序的整数数组 返回值: sorted_arr -- 排序后...
在Python中实现归并排序相当直观,但要达到优化和原地排序,需要利用更高级的编程技巧。标准的归并排序算法需要额外的存储空间来暂存排序过程中的数组片段,但这可以通过原地归并排序技术将空间复杂度优化至O(1)。在...
文件归并排序 命令行说明: sort.py -i <input_filename> -o <output_filename> [-d ] [-c ] [-s ] [-t ] -i 输入源文件名 -o 输出目标文件名,如果未指定,则结果覆盖到源文件 -d 可选项,文件文本行的列分隔符,...
以下是一个基本的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 = ...
归并排序是典型的分治法的应用 思想:先递归分解数组,再合并数组 原理:将数组分解最小之后,然后合并两个有序数组,基本思想是比较两个数组的最前面的数,谁小就取谁,取完后,将相应的指针后移以为。然后再比较,...
详细描述请查看该文章:https://blog.csdn.net/qq_28531269/article/details/122415336?spm=1001.2014.3001.5502
在Python中实现归并排序,我们可以遵循算法导论中的步骤,首先定义`merge`函数来合并两个已排序的子数组。 在`merge`函数中,我们以四个参数作为输入:原始数组`A`,以及子数组的左右边界`p`、`q`、`r`。通过计算...
Python 算法 15归并排序思想.mp4
Python 算法 16归并排序实现.mp4
在Python中实现归并排序,需要编写两个函数:`merge()`和`mergesort()`。`merge()`函数负责将两个已排序的数组(列表)合并成一个有序的数组。`mergesort()`函数则递归地将一个数组分为两个部分,直到每个部分只剩下...
Python语言实现归并排序非常直观,通过定义两个函数来完成排序和合并的操作。`merge_sort`函数负责排序过程,它通过递归调用自身来完成数组的分割,最终调用`merge`函数来完成数组的合并。`merge`函数则专门处理合并...