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