算法——排序——归并排序
来源:互联网 发布:手动剃须刀推荐知乎 编辑:程序博客网 时间:2024/06/05 14:30
</pre>描述:<p></p><p><span style="white-space:pre"></span>1.先将它分成两半,分别排序,然后将结果归并</p><p><span style="white-space:pre"></span>2.O(nlogn)(最好与最坏都一样)</p><p><span style="white-space:pre"></span>3.稳定的排序</p><p>Code:</p><p>自顶向下(体现分治法的思想)</p><p></p><pre code_snippet_id="1643953" snippet_file_name="blog_20160412_2_2719246" name="code" class="python">class Sort: arrTemp = None @classmethod def sort(cls,arr): arrTemp = [0 for i in range(0, len(arr))] cls.sortMerge(arr, 0, len(arr) - 1) @classmethod def sortMerge(cls, arr, lo, hi): if hi <= lo : return mid = lo + (hi - lo)/2 cls.sortMerge(arr, lo, mid) cls.sortMerge(arr, mid + 1, hi) cls.merge(arr, lo, mid, hi) @classmethod def merge(cls, arr, lo, mid, hi): i = lo j = mid + 1 arrTemp = arr[:] k = lo while k <= hi: if arrTemp[j] < arrTemp[i]: arr[k] = arrTemp[j] j += 1 k += 1 else: arr[k] = arrTemp[i] i += 1 k += 1 while i > mid and k <= hi: arr[k] = arrTemp[j] k += 1 j += 1 while j > hi and k <= hi: arr[k] = arrTemp[i] i += 1 k += 1
自底向上(适合于链表)
class Sort: arrTemp = None @classmethod def sort(cls, arr): n = len(arr) arrTemp = [0 for i in range(0, n)] size = 1 while size < n: lo = 0 while lo < n - size: cls.merge(arr, lo, lo+size - 1, min(lo+size+size-1, n - 1)) lo += size + size size = size + size return @classmethod def merge(cls, arr, lo, mid, hi): i = lo j = mid + 1 arrTemp = arr[:] k = lo while k <= hi: if arrTemp[j] < arrTemp[i]: arr[k] = arrTemp[j] j += 1 k += 1 else: arr[k] = arrTemp[i] i += 1 k += 1 while i > mid and k <= hi: arr[k] = arrTemp[j] k += 1 j += 1 while j > hi and k <= hi: arr[k] = arrTemp[i] i += 1 k += 1
0 0
- 排序算法—归并排序
- 排序算法—归并排序
- 排序—归并排序
- 排序算法总结——归并排序
- 经典排序算法——归并排序
- 排序算法——归并排序
- 排序算法——归并排序
- 排序算法——归并排序
- 算法——排序之归并排序
- 排序算法——归并排序
- 排序算法系列——归并排序
- 【排序算法】——归并排序
- 排序算法——归并排序
- 经典排序算法——归并排序
- 排序算法——归并排序
- 排序算法——归并排序
- 常用排序算法——归并排序
- 排序算法——归并排序
- 深入理解classLoader
- 自定义View,包括事件分发,滑动冲突,测量以及布局
- nginx+tomcat 慢响应问题定位
- NDK-JNI实战教程(四)再谈新工具及NDK开发调试
- HTML学习之网页制作基础和常用标签及标签属性
- 算法——排序——归并排序
- TCP/IP(三)IP协议,ARP协议,RARP协议
- 剑指offer系列之31:把数组排成最小的数
- 委托与事件总结
- SELinux/apache
- u3d 修改新的C#脚本模板-NewBehaviourScript.c
- LTE-TDD随机接入过程(4)-RIV的解析和Preamble资源的选择
- VIJOS 1477 跳动的水珠
- Java面试题:栈和队列的实现