Python实现归并排序的两种方法
来源:互联网 发布:江滨观邸11#网络备案 编辑:程序博客网 时间:2024/05/20 00:38
第一种
#归并排序(递归)的python实现def merge(li,p,q,r): n1 = q - p + 1 n2 = r - q L = [] R = [] for i in range(n1): L.append(li[p+i]) for j in range(n2): R.append(li[q+1+j]) i = 0 j = 0 k = p while i<len(L) and j<len(R): if L[i]<R[j]: li[p] = L[i] p += 1 i += 1 else: li[p] = R[j] p += 1 j += 1 if i<len(L): li[p] = L[i] i += 1 p += 1 if j<len(R): li[p] = R[j] p += 1 j += 1def MergeSort(li, p, r): if p < r: q = int((p+r)/2) MergeSort(li, p, q) MergeSort(li, q+1, r) merge(li, p, q, r)if __name__ == '__main__': l = [3,41,52,26,38,57,9,49] MergeSort(l,0,len(l)-1) print(l)
第二种
#Python实现归并排序def Merge(left, right): li = [] i = 0 j = 0 while i<len(left) and j<len(right): if left[i] < right[j]: li.append(left[i]) i += 1 else: li.append(right[j]) j += 1 if i<len(left): li = li + left[i:] if j<len(right): li = li + right[j:] return lidef MergeSort(li): if len(li)<=1: return li q = int(len(li)/2) ll = MergeSort(li[:q]) rr = MergeSort(li[q:]) lll = Merge(ll,rr) return lllli = [3,41,52,26,38,57,9,49]print(MergeSort(li))print(li)
0 0
- Python实现归并排序的两种方法
- 归并排序--自上而下和自下而上两种方法的实现
- 归并排序的两种实现形式
- 归并排序的两种不同实现
- 归并排序两种实现
- 归并排序的Python实现
- 归并排序的Python实现
- 归并的两种方法
- 两种归并排序算法的实现:二路归并排序和基本归并排序(虚拟消除递归的二路归并排序)
- python实现归并排序
- Python 实现归并排序
- python实现归并排序
- Python实现归并排序
- python实现归并排序
- Python实现归并排序
- python实现归并排序
- 归并排序算法的python实现
- 改进版python实现的归并排序
- HDU 1561 The more, The Better
- CSS中父div与子div——子div有内容,父div高度却为0?
- 利用Nignx巧妙解决我所遇到的DDOS攻击
- 正式进入IT行业——Android程序
- 海康视频rtsp
- Python实现归并排序的两种方法
- 重拾编程之路--jeetcode(java)-- Remove Nth Node From End of List
- 【iOS】Quartz 2D图片压缩和裁剪
- 快速排序普通法与中值枢纽元法以及三切法
- 浅谈andro studio怎么导入dependecy(新特性,jar包,三方module)
- 《leetCode》:Unique Binary Search Trees II
- 【ITOO】S0A
- C语言快速删除列表选中项算法
- monkey 测试工具