heap sort in python :-) just for fun
2015-07-31 19:32
549 查看
import random def parent(i): return i >> 1 def left(i): return i << 1 def right(i): return (i << 1) + 1 def max_heapify(data, i): l = left(i) r = right(i) if l < len(data) and data[i] < data[l]: largest = l else: largest = i if r < len(data) and data[largest] < data[r]: largest = r if i != largest: tmp = data[i] data[i] = data[largest] data[largest] = tmp max_heapify(data, largest) def build_max_heap(data): for i in range(len(data)/2-1, -1, -1): max_heapify(data, i) def min_heapify(data, i): l = left(i) r = right(i) if l < len(data) and data[l] < data[i]: minimum = l else: minimum = i if r < len(data) and data[r] < data[minimum]: minimum = r if minimum != i: tmp = data[i] data[i] = data[minimum] data[minimum] = tmp min_heapify(data, minimum) def build_min_heap(data): for i in range(len(data)/2-1, -1, -1): min_heapify(data, i) def make_random_data(size): data = [random.randint(1, 101) for _ in range(size)] return data if __name__ == '__main__': random_data = make_random_data(10) print random_data build_max_heap(random_data) print random_data build_min_heap(random_data) print random_data
相关文章推荐
- python print格式化输出
- Python3 显示bytes中的值
- python中的getopt模块
- python 的使用:getattr,hasattr
- python_getopt解析命令行输入参数的使用
- Python实现Table To Point代码
- Python实现Table To Point代码 分类: Python 2015-07-31 18:45 3人阅读 评论(0) 收藏
- python 之 分割参数getopt
- python2在pycharm中的中文乱码问题处理方式
- python3.x中的urllib模块
- Python实现fibnacci
- Python初步
- Python调用windows下DLL详解 - ctypes库的使用
- python 函数式编程
- Python GUI编程各种实现的对比
- python Iterable和Iterator
- Python中的局部变量和全局变量
- python range()函数
- python实现爬图,不要再爬妹子图了,太没品
- python的range()函数用法