分治法求解MergeSort
来源:互联网 发布:淘宝招牌图片免费下载 编辑:程序博客网 时间:2024/05/16 14:29
MergeSort 归并排序,可以理解为将把需要排序的内容分成两部分,排序完之后再合并起来。
void merge(int a[],int b[],int low,int mid,int high){ int s = low , t = mid + 1, k = low; while(s<=mid&&t<=high) { if(a[s] < a[t]){ b[k] = a[s]; s++; } else{ b[k] = a[t]; t++; } K++; } if(s == mid + 1) { for(i=k;i<=high;i++) b[i] = a[t++]; } else { for(i=k;i<=high;i++) b[i] = a[s++]; }}void MergeSort(int a[],int b[],int low,int high){ if(low<high) { int mid = (low + high)/2; MergeSort(a,b,low,mid); MergeSort(a,b,mid+1,high); Merge(a,b,low,mid,high); }}
MergeSort python实现
def Merge(left,right): result = [] i,j = 0,0 while(i < len(left) and j < len(right)): if(left[i] < right[j]): result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 while(i < len(left)): result.append(left[i]) i += 1 while(j < len(right)): result.append(right[j]) j += 1 return result def MergeSort(L): if(len(L) < 2): return L[:] else: mid = int(len(L)/2) left = MergeSort(L[:mid]) right = MergeSort(L[mid:]) return Merge(left,right)
0 0
- 分治法求解MergeSort
- 分治法排序 Thinking in MergeSort
- One Algorithm A Day --- MERGESORT--分治法
- 分治法——归并排序(MergeSort)
- 分治法求解逆序数
- 分治法求解切割篱笆
- 分治法求解最大数组
- 分治法之求解格雷码
- 分治法求解二叉树深度
- 分治法求解最近点对
- 分治法求解方程的解
- 分治法求解逆序数问题
- 分治法求解最大子数组问题
- 最近对问题,分治法求解
- 分治法求解最近点距
- 分治法求解最大子数组问题
- 众数问题(分治法求解-mtzhang)
- 分治法求解最近点对问题
- C语言:前言
- HTML meta viewport属性详解
- CSS入门教程:语法基础
- 动态代理的应用(Proxy,InvocationHandler)
- A. Vitaliy and Pie
- 分治法求解MergeSort
- ACM学习感悟——POJ1932(图论)
- PL/SQL连接报错问题 make sure you have the 32 bits oracle client installed
- ISO8859_1
- 15.4.5
- gvimdiff as P4DIFF
- junit出现 invalid project specified错误
- 读《世界科学技术通史》过程中的感悟(三)
- OO的概念和设计原则