tinytsa86 发表于 2015-11-19 19:50:00

树形选择排序问题

利用树形选择排序(锦标赛排序)从8个队中选出最大者冠军,亚军,季军,最多需要比赛多少场?
希望回答者能给出答案和解题思路过程。谢谢啦!

不二如是 发表于 2015-11-19 19:50:01

推荐: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=' ')   

莫欺少年穷 发表于 2015-12-23 20:25:57

ExiaGN001 发表于 2022-6-26 19:40:00

本帖最后由 ExiaGN001 于 2022-7-8 16:53 编辑

首先,8队二分,比出第一,需要7场
其次,第二只可能被第一击败,在第一击败的3个队伍中比赛2场,求出第二
再次,第三只能被第一或第二击败,在第一击败的2队(去掉第二)和第二击败的2队(没打败第一)中再二分求出第三,需要3场
7+2+3=12场
如果有用,麻烦设置最佳答案,谢谢~
页: [1]
查看完整版本: 树形选择排序问题