本篇文章整理了归并排序和快速排序的相关原理和python实现代码
归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即分而治之)。
最后合并详细过程如下:
基于python实现的代码如下:
1 | def merge(arr, l, m, r): |
快速排序
快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。
该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
下面图有画错的地方,应该用i,j=left,right,执行左右指针的操作,递归的是[left,i],[j,right]两部分
填坑法
交换法
1 | def partition_tiankeng(arr,left,right): |
参考文献:
[1] https://blog.csdn.net/morewindows/article/details/6684558
[2] https://www.runoob.com/python3/python-quicksort.html
[3] https://www.runoob.com/python3/python-merge-sort.html