import random class Student: def __init__(self, x,n): self.val = x self.name = n class Node: def __init__(self, x,left=None,right=None,p=None): self.val = x self.left = None self.right = None li=[]; for t in range(20): r=random.randint(1,80) s=Student(r,"張三"+str(r)); li.append(s) for t in li: print(t.name,t.val) def shiftDown(a,i): if(len(a)>i*2+2): if(a[i]>a[i*2+1] or a[i]>a[i*2+2] ): if(a[i*2+1] <a[i*2+2] ): a[i],a[i*2+1]=a[i*2+1],a[i] shiftDown(a, i*2+1) else: a[i], a[i * 2 + 2] = a[i * 2 + 2], a[i] shiftDown(a, i*2+2) elif (len(a)==i*2+2): if a[i] > a[i * 2 + 1]: a[i], a[i * 2 + 1] = a[i * 2 + 1], a[i] def shiftUp(a): while len(a) > 0: print(a[0]) a[0] = a[-1] a.pop() shiftDown(a, 0) arr=[7,12,3,56,7,8,33,5,89,23,234,5,2332,2,45] #treePrint(arr,0) # heapSort2(arr) for t in range((len(arr)-1)//2,-1,-1): shiftDown(arr,t) print(arr,"22222222222222") shiftUp(arr) print(arr)
堆排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.