python 归并排序 与 快速排序 速度对比
来源:互联网 发布:岳不群 知乎 编辑:程序博客网 时间:2024/06/08 13:52
import timedef merge(list,first,mid,last): left = list[first:mid+1] right = list[mid+1:last+1] while left != [] and right !=[]: if left[0] < right[0]: list[first] = left.pop(0) else: list[first] = right.pop(0) first +=1 if left != []: list[first:last+1] = left[:] elif right!= []: list[first:last+1] = right[:]def sort(first,last): # 归并排序 global list mid = (last + first)//2 if first < last: sort(first,mid) sort(mid+1,last) merge(list,first,mid,last)def qsort(list): # 快速排序 l = list.pop() x = [] y = [] while list: m = list.pop() if m < l: x.append(m) else: y.append(m) if x: qsort(x) list.extend(x) list.append(l) if y: qsort(y) list.extend(y) return listlist = [2,4,6,8,1,3,6,7,9,11,17,13,12]T = time.time()sort(0,len(list)) # 归并排序print(list,time.time()-T)print('-'*30)list = [2,4,6,8,1,3,6,7,9,11,17,13,12] # 重置列表 T = time.time()list.sort() # 内置函数sortprint(list,time.time()-T)print('-'*30)list = [2,4,6,8,1,3,6,7,9,11,17,13,12]T = time.time()qsort(list) # 快速排序print(list,time.time()-T)
时间对比:
[1, 2, 3, 4, 6, 6, 7, 8, 9, 11, 12, 13, 17] 5.3882598876953125e-05------------------------------[1, 2, 3, 4, 6, 6, 7, 8, 9, 11, 12, 13, 17] 3.0994415283203125e-06------------------------------[1, 2, 3, 4, 6, 6, 7, 8, 9, 11, 12, 13, 17] 4.076957702636719e-05Process finished with exit code 0
阅读全文
0 0
- python 归并排序 与 快速排序 速度对比
- 快速排序与归并排序时间对比
- 对比快速排序,理解归并排序
- 快速排序与归并排序
- 快速排序与归并排序
- 快速排序与归并排序
- 归并排序与快速排序
- 归并排序与快速排序
- 归并排序与快速排序
- 归并排序与快速排序
- 快速排序、归并排序与选择排序
- 排序:快速排序与归并排序
- Python算法 归并排序和快速排序
- python实现快速排序和归并排序
- 快速排序 and 归并排序(python)
- 关于快速排序与归并排序
- 快速排序&归并排序
- 快速排序,归并排序
- Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches
- 利用反射原理用get/set方法设置属性(也可用clone,但如果有特殊处理的东西,这个好用)
- setFillAfter失效
- 大数专题A
- 重写与重载的区别
- python 归并排序 与 快速排序 速度对比
- POJ 2533 Longest Ordered Subsequence(最长上升子序列模版)
- Nginx配置详解
- Python爬虫Requests模块系列之六
- 怎么写一个可变参数的宏
- Python subprocess模块学习总结
- android 6.0权限开发---拍照,打开相册问题
- android基础--拨打电话两种方式
- ShowDoc部署手册