冒泡,快排,堆排序
#!/usr/bin/env python# _*_ coding:utf-8 _*_
__author__ = "ligq"
import time
import random
import copy
import sys
def cal_time(func):
def wrapper(*args, **kwargs):
t1 = time.time()
result = func(*args, **kwargs)
t2 = time.time()
print("%s running time: %s secs." % (func.__name__, t2 - t1))
return result
return wrapper
#构造堆
def sift(data,low ,high):
i = low
j = 2 * i + 1
tmp = data
while j <= high:
if j+1 <= high and data < data:
j += 1
if data >tmp:
data = data
i = j
j = 2*i+1
else:
break
data=tmp
#堆排序
@cal_time
def heap_sort(data):
n = len(data)
for i in range (n // 2 -1,-1,-1):
sift(data,i ,i -1)
for i in range(n-1,-1,-1):
data,data = data,data
sift(data,0,i-1)
#冒泡排序
@cal_time
def bubble_sort(data):
for i in range(len(li)-1):
exchange = False
for j in range(len(li) - i- 1):
if li > li :
li,li = li,li
exchange =True
if not exchange:
break
li = list(range(100))
# random.shuffle(li)
print(li)
bubble_sort(li)
print(li)
# random.shuffle(li)
print(li)
heap_sort(li)
print(li)
页:
[1]