Implementacja (część 2)
Lekcja 6 z 9 w kursie Sortowanie przez kopcowanie — seria DSA w Coddy.
Teraz łączymy budowanie kopca z wielokrotnym wyodrębnianiem maksimum.
Wyzwanie
ŚredniTeraz połącz wszystko w pełny algorytm.
Napisz funkcję o nazwie heapSort, która przyjmuje tablicę liczb całkowitych i zwraca ją posortowaną w rosnącej kolejności.
Najpierw zbuduj kopiec maksymalny, przesiewając w dół każdy węzeł niebędący liściem, od indeksu n/2 - 1 do 0. Następnie wielokrotnie zamieniaj korzeń (największą wartość) z ostatnim elementem kopca, zmniejszaj kopiec o jeden element i przesiewaj nowy korzeń w dół.
Użyj funkcji pomocniczej przesiewającej w dół, która przyjmuje bieżący
sizekopca, aby można było stopniowo zmniejszać kopiec.
Spróbuj swoich sił
#include <stdlib.h>
int* heapSort(int* arr, int arr_size, int* returnSize) {
// Wpisz kod tutaj
*returnSize = arr_size;
return arr;
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Sortowanie przez kopcowanie — seria DSA
2Algorytm
Jak to działa?PseudokodImplementacja (część 1)Implementacja (część 2)Poćwicz samodzielnie: Kompilator C online