Пример #1
0
    def testExtract(self):
        u"""测试堆的提取最值操作"""

        heap = Heap([1, 2, 3, 4, 5, 6])
        data = heap.extract()
        self.assertEqual(1, data)
        self.assertEqual(5, heap.size())
        self.assertEqual([2, 4, 3, 6, 5], heap._heap)

        data = heap.extract()
        self.assertEqual(2, data)
        self.assertEqual(4, heap.size())
        self.assertEqual([3, 4, 5, 6], heap._heap)
Пример #2
0
    def testExtract(self):
        u"""测试堆的提取最值操作"""

        heap = Heap([1, 2, 3, 4, 5, 6])
        data = heap.extract()
        self.assertEqual(1, data)
        self.assertEqual(5, heap.size())
        self.assertEqual([2, 4, 3, 6, 5], heap._heap)

        data = heap.extract()
        self.assertEqual(2, data)
        self.assertEqual(4, heap.size())
        self.assertEqual([3, 4, 5, 6], heap._heap)
Пример #3
0
def heapSort(data):
    """对给定的数组进行堆排序
    Args:
        data: 要排序的数组
    Returns:
        堆排序后的数组
    """

    result = []
    heap = Heap(data)
    # 堆的根元素总是最小的,所以只要执行len(data)次提取最值(包括调整堆)即可
    for i in xrange(len(data)):
        result.append(heap.extract())
    return result