HeapSort с использованием функций build_min_heap и min_heapify "hand-made" - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь реализовать сортировку кучи без использования библиотеки 'heapq', чтобы попытаться понять процесс, стоящий за каждым этапом процесса сортировки кучи. Я попробовал и написал код ниже, но он не дает Мне любой вывод. Я не понимаю, в чем проблема. Спасибо заранее. [введите описание изображения здесь] [1]

def min_heapify(array,element):
    left=(element*2)+1
    right=(element*2)+2
    length=len(array)-1
    smallest=element

    while left<=length and array[element]>array[left]:
        smallest=left
    while right<=length and array[smallest]>array[right]:
        smallest=right
    if smallest!=element:
        array[smallest],array[element]=array[element],array[smallest]
        min_heap(array,smallest)





def build_min_heap(array):
    n=len(array)-1
    array_sorted=[]
    for element in range(n//2,-1,-1):
        min_heapify(array,element)
    return array

def heapsort(array):
    aray=array.copy()
    sorted_array=[]
    build_min_heap(array)
    for i in range(len(array)):
        array[-1],array[0]=array[0],array[-1]
        sorted_array.append(array.pop())
        min_heapify(array,i)
    return sorted_array




array=[10,20,3,15,1000,60,16]
newarray=build_min_heap(array)
print(newarray)
...