|
发表于 2014-12-7 00:57:31
|
显示全部楼层
堆排序- # -*- coding: utf-8 -*-
- def sift_down(lst, start, end):
- root = start
- while True:
- child = 2 * root + 1
- if child > end:
- break
- if child + 1<= end and lst[child] < lst[child + 1]:
- child += 1
- if lst[root] < lst[child]:
- lst[root], lst[child] = lst[child], lst[root]
- root = child
- else:
- break
- def heap_sort(lst):
- for start in range((len(lst) - 2) / 2, -1, -1):
- sift_down(lst, start, len(lst) - 1)
- for end in range(len(lst)-1, 0, -1):
- lst[0], lst[end] = lst[end], lst[0]
- sift_down(lst, 0, end-1)
- return lst
-
- #######################################################
- import random
- from time import *
- l = list()
- for i in range(10000):
- l.append(random.randint(1, 10000))
- start = time()
- heap_sort(l)
- stop = time()
- print('堆排序用了%f秒' % (stop - start))
- start = time()
- sorted(l)
- stop = time()
- print('sorted内置函数用了%f秒' % (stop - start))
复制代码 |
评分
-
查看全部评分
|