树形选择排序问题
利用树形选择排序(锦标赛排序)从8个队中选出最大者冠军,亚军,季军,最多需要比赛多少场?希望回答者能给出答案和解题思路过程。谢谢啦! 推荐:https://fishc.com.cn/thread-211114-1-1.html
def heapBasic(heap,heaplen,i):
left = 2*i + 1
right = 2*i + 2
larger = i
if left < heaplen and heap < heap:
larger = left
if right < heaplen and heap < heap:
larger = right
if larger != i:
heap, heap = heap, heap
heapBasic(heap, heaplen, larger)
def buildHeap(heap):
heap_len = len(heap)
for i in range((heap_len -2)//2,-1,-1):
heapBasic(heap, heap_len, i)
def heapSort(heap):
buildHeap(heap)
for i in range(len(heap)-1, -1, -1):
heap, heap = heap, heap
heapBasic(heap, i, 0)
data =
print("原始数据:")
for k in range(len(data)):
print(f"{data}",end=' ')
print('\n----我是分界线------\n')
print("堆排序后结果:")
heapSort(data)
for k in range(len(data)):
print(f"{data}",end=' ')
本帖最后由 ExiaGN001 于 2022-7-8 16:53 编辑
首先,8队二分,比出第一,需要7场
其次,第二只可能被第一击败,在第一击败的3个队伍中比赛2场,求出第二
再次,第三只能被第一或第二击败,在第一击败的2队(去掉第二)和第二击败的2队(没打败第一)中再二分求出第三,需要3场
7+2+3=12场
如果有用,麻烦设置最佳答案,谢谢~
页:
[1]