Esempio n. 1
0
 def sort(data_array, order="Desc"):
     heap_type = (order == "Desc" and "min") or "max"
     # 建立堆方式1 从最后一个节点父节点开始
     start_index = BinaryHeap.get_parent_index(len(data_array) - 1)
     for adjust_index in range(start_index, -1, -1):
         BinaryHeap.__move__down(heap_type, data_array, adjust_index)
     # 建立堆方式2 每个节点都向上调整
     # for i in range(len(input_data)):
     #     BinaryHeap.__move__up__(heap_type, input_data, i)
     bt = BinaryTree(data_array)
     node_text_map, edges = bt.get_show_info()
     GraphVisualization.show(node_text_map, edges, view_graph=True)
     # 依次与第i个元素交换 然后调整
     for i in range(len(data_array)-1, 0, -1):
         data_array[i], data_array[0] = data_array[0], data_array[i]
         BinaryHeap.__move__down(heap_type, data_array, 0, i)
     return data_array