def heapsort(lista): """ Retorna a lista ordenada usando o algoritmo HeapSort. """ h = MaxHeap(lista) for i in range(len(lista) - 1, 0, -1): temp = lista[0] lista[0] = lista[i] lista[i] = temp h.heap_size -= 1 h.max_heapify(0) return lista
def test_is_max_heap_não_é(self): h1 = MaxHeap() h1.lista = [1, 2, 3, 4, 5, 6, 7, 8, 9] h1.heap_size = len(h1.lista) self.assertFalse(h1.is_max_heap()) h1.lista = [9, 8, 3, 7, 4, 1, 5, 2, 6] h1.heap_size = len(h1.lista) self.assertFalse(h1.is_max_heap())
def test_extrair_maior(self): h1 = MaxHeap([5, 2, 3, 7, 9, 4, 8, 1, 6]) self.assertEqual(h1.extrair_maior(), 9) self.assertEqual(h1.extrair_maior(), 8) self.assertEqual(h1.extrair_maior(), 7) self.assertEqual(h1.extrair_maior(), 6) self.assertEqual(h1.extrair_maior(), 5) self.assertEqual(h1.extrair_maior(), 4) self.assertEqual(h1.extrair_maior(), 3) self.assertEqual(h1.extrair_maior(), 2) self.assertEqual(h1.extrair_maior(), 1) self.assertRaises(ValueError, h1.extrair_maior)
def test_inserir_já_em_max_heap(self): h = MaxHeap() h.inserir(9) self.assertTrue(h.is_max_heap()) h.inserir(8) self.assertTrue(h.is_max_heap()) h.inserir(3) self.assertTrue(h.is_max_heap()) h.inserir(7) self.assertTrue(h.is_max_heap()) h.inserir(4) self.assertTrue(h.is_max_heap()) h.inserir(1) self.assertTrue(h.is_max_heap()) h.inserir(2) self.assertTrue(h.is_max_heap()) h.inserir(5) self.assertTrue(h.is_max_heap()) h.inserir(6) self.assertTrue(h.is_max_heap())
def test_is_max_heap_ordenado(self): h1 = MaxHeap() h1.lista = [9, 8, 7, 6, 5, 4, 3, 2, 1] h1.heap_size = len(h1.lista) self.assertTrue(h1.is_max_heap())
def test_extrair_maior_underflow(self): h = MaxHeap() self.assertRaises(ValueError, h.extrair_maior)
def test_build_já_é_heap(self): h1 = MaxHeap([9, 8, 3, 7, 4, 1, 2, 5, 6]) self.assertTrue(h1.is_max_heap())
def test_build_decrescente(self): h1 = MaxHeap([9, 8, 7, 6, 5, 4, 3, 2, 1]) self.assertTrue(h1.is_max_heap())
def test_build_aleatorio(self): h1 = MaxHeap([5, 2, 3, 7, 9, 4, 8, 1, 6]) self.assertTrue(h1.is_max_heap())
def test_build_crescente(self): h1 = MaxHeap([1, 2, 3, 4, 5, 6, 7, 8, 9]) self.assertTrue(h1.is_max_heap())
def test_is_max_heap_iguais(self): h1 = MaxHeap() h1.lista = [9, 9, 9, 9, 9, 1, 2, 5, 6] h1.heap_size = len(h1.lista) self.assertTrue(h1.is_max_heap())
def test_is_max_heap_nao_ordenado(self): h1 = MaxHeap() h1.lista = [9, 8, 3, 7, 4, 1, 2, 5, 6] h1.heap_size = len(h1.lista) self.assertTrue(h1.is_max_heap())