首页 > 学院 > 开发设计 > 正文

归并排序算法

2019-11-11 03:17:48
字体:
来源:转载
供稿:网友

所谓归并排序,其实就是将一个数组分成等分两个相等的数组,然后对这两个数组都做同样的排序操作,再将两个数组结合起。实际是一个递归的过程 那么这个结合是怎么样的操作? 举例左数组为经过排序操作等于【3,4】,右数组等于【1,2】,那么 这个数组本应是【3,4,1,2】,如何使之变成【1,2,3,4】呢? 事实上,这是两个有序的数组,我们只须不断地比较两个数组各自的第一个,取出最小的加入新数组,直到两个数组再也没有元素。这样就完成了排序

a=[6,2,3,9,2,1,5,6,19,87,65,65,21,35,75,82,59,62]def merge(left,right): ret=[] j=0 k=0 while(j<len(left) and k<len(right)): if left[j]<right[k]: temp=left[j] j+=1 else: temp=right[k] k+=1 ret.append(temp) while(j<len(left)): ret.append(left[j]) j+=1 while(k<len(right)): ret.append(right[k]) k+=1 return retdef mergeSort(a): if len(a)<2: return a l=len(a) left=a[:l/2] right=a[l/2:] return merge(mergeSort(left),mergeSort(right))PRint mergeSort(a)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表