图示经典算法--自底向上的归并排序
来源:互联网 发布:js监听屏幕大小变化 编辑:程序博客网 时间:2024/05/16 04:24
自底向上的归并排序
自底向上的归并排序使用分治思想,将数组先两两归并,再四四归并,然后八八归并,直到整个数组有序。
class MergeBU(object): """docstring for MergeBU""" @classmethod def merge(cls, a, lo, mid, hi): # 将a[lo...hi]复制到aux[lo...hi] cls.aux[lo:hi + 1] = a[lo:hi + 1] i = lo j = mid + 1 k = lo # 归并会a[lo...hi] while i <= mid and j <= hi: if cls.aux[i] < cls.aux[j]: a[k] = cls.aux[i] k += 1 i += 1 else: a[k] = cls.aux[j] k += 1 j += 1 n = mid + 1 - i a[k:k + n] = cls.aux[i:mid + 1] k += n n = hi + 1 - j a[k:k + n] = cls.aux[j:hi + 1] @classmethod def sort(cls, a): # lgN次两两归并 n = len(a) cls.aux = [0] * n # sz子数组大小 sz = 1 while sz < n: # lo子数组索引 lo = 0 while lo < n - sz: cls.merge(a, lo, lo + sz - 1, min(lo + sz + sz - 1, n - 1)) lo += (sz + sz) sz += sz
0 0
- 图示经典算法--自底向上的归并排序
- 图示经典算法--自顶向下的归并排序
- 自底向上的归并排序算法
- 算法之自底向上的归并排序
- 3-4 自底向上的归并排序算法
- 自底向上的归并排序
- 自底向上的归并排序
- 自底向上的归并排序
- 自底向上归并排序
- 自底向上的归并排序-转自算法C语言实现
- 算法入门之归并排序(自底向上方法)
- 算法系列—自底向上归并排序
- 归并排序的自底向上改进-使用插入排序
- 自顶向下的归并排序和自底向上的归并排序
- 链表的自底向上归并排序
- 非递归 自底向上归并排序
- 归并排序-自底向上(java实现)
- 归并排序—自底向上和自顶向下
- 免费全面系统的JAVA,PHP,iOS,Android视频资料
- Nginx配置文件nginx.conf中文详解(总结)
- Java中使用jvisualvm进行可视化内存分析
- c++初学者笔记
- System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。
- 图示经典算法--自底向上的归并排序
- Java字符串操作
- 数组的查找,反转,排序,sort排序
- 奇异值分解(SVD)与线性变换的几何意义
- 开始学习Java啦!
- 解决cocopods不提示第三方库名字的方法
- HDU1021-Fibonacci Again,,找规律就好了~~~
- Unity 通过计算定点绘制图形
- 计蒜客|C++程序设计|二维数组