|
发表于 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[larger] < heap[left]:
- larger = left
- if right < heaplen and heap[larger] < heap[right]:
- larger = right
- if larger != i:
- heap[larger], heap[i] = heap[i], heap[larger]
- 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[0], heap[i] = heap[i], heap[0]
- heapBasic(heap, i, 0)
- data = [99,66,88,55,3,23]
- print("原始数据:")
- for k in range(len(data)):
- print(f"{data[k]}",end=' ')
- print('\n----我是分界线------\n')
- print("堆排序后结果:")
- heapSort(data)
- for k in range(len(data)):
- print(f"{data[k]}",end=' ')
复制代码
|
|