Python - Merge Sort
2015-10-05 15:07
666 查看
import random def merge(arr, l, p, r): left = arr[l: p+1] #copy left part, including p right = arr[p+1: r+1] #copy right part, start from p+1 i = 0 j = 0 k = l #start from the left while i < len(left) and j < len(right): if left[i] < right[j]: arr[k] = left[i] i = i + 1 else: arr[k] = right[j] j = j + 1 k = k + 1 while i < len(left): arr[k] = left[i] i = i + 1 k = k + 1 while j < len(right): arr[k] = right[j] j = j + 1 k = k + 1 def merge_sort(arr, l, r): if l < r: p = int((l + r) / 2) merge_sort(arr, l, p) #sort [1, p] merge_sort(arr, p+1, r) #sort[p + 1 ... end] merge(arr, l, p, r) if __name__ == '__main__': sample = [random.randrange(0, 100, 1) for i in range(10)] original = sample[:] print('Before: %s'%original) merge_sort(sample, 0, len(sample)-1) print('After: %s'%sample) print('Corrected: %s'%(sample == sorted(original)))
相关文章推荐
- Python 常见语法错误
- TF-IDF算法-Python实现(附源代码)
- Python 变量类型
- 使用Swig封装的python对象
- python tab键自动补齐命令
- Python - Quick Sort
- python+Eclipse+pydev环境搭建
- Python爬虫判断url链接的是下载文件还是html文件
- NumPy常见函数和使用示例
- 详细记录python的range()函数用法
- Python面向对象编程 - 一个记事本程序范例(二)
- 1.Python补充_序列的方法
- python中return与pass的区别
- python小题目
- python生成中文验证码,带旋转,带干扰噪音线段
- 【Python】输出
- python设计模式1:导言
- Python面向对象编程 - 一个记事本程序范例(一)
- 使用 Python3 抓取网页的简单范例
- Python学习---开发环境搭建