defmake_big3(in_list, b, lent):if2*b+2== lent:if in_list[2*b+1]>= in_list[b]:
maxi =2*b+1else:
maxi = b
elif2*b+2< lent:if in_list[2*b+1]>= in_list[2*b+2]and in_list[2*b+1]>= in_list[b]:
maxi =2*b+1elif in_list[2*b+2]>= in_list[2*b+1]and in_list[2*b+2]>= in_list[b]:
maxi =2*b+2else:
maxi = b
else:returnif maxi != b:
in_list[maxi], in_list[b]= in_list[b], in_list[maxi]
make_big3(in_list, maxi, lent)defheapsort(in_list):for lent inrange(len(in_list),0,-1):for i inrange(lent//2-1,-1,-1):
make_big3(in_list, i, lent)
in_list[0], in_list[lent-1]= in_list[lent-1], in_list[0]import numpy as np
a = np.random.randint(10, size=10).tolist()print(a)
heapsort(a)print(a)
快排
defquicksort(arr):iflen(arr)<=1:return arr
pivot = arr[0]
left =[x for x in arr if x < pivot]
middle =[x for x in arr if x == pivot]
right =[x for x in arr if x > pivot]return quicksort(left)+ middle + quicksort(right)print(quicksort([3,6,8,10,1,2,1]))