#构造堆
def sift(data,low ,high):
i = low
j = 2 * i + 1
tmp = data
while j <= high:
if j+1 <= high and data[j] < data[j +1]:
j += 1
if data[j] >tmp:
data = data[j]
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[0],data = data,data[0]
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[j] > li [j+1]:
li[j],li[j+1] = li[j+1],li[j]
exchange =True
if not exchange:
break