Úvod do haldy v Pythonu

Kterýkoli z programovacích jazyků poskytuje různé funkce na základě předdefinovaných funkcí. Využitím předdefinovaných metod a funkcí nabízených programovacím jazykem lze vyvinout komplexní aplikaci. Když mluvíme o transformaci hodnot seznamu do tříděné podoby, nazývá se tento přístup třídění. Přestože je výstup třídění stejný bez ohledu na třídění, nejlepší přístup zajišťuje účinnost třídění dat. Pokud jde o třídění pomocí programovacího jazyka python, máme metodu sort (), která dokáže hodnotu jednoduše přijmout a seřadit vzestupně. V tomto článku se naučíme, jak třídit data pole ve vzestupném pořadí pomocí haldy a pomocí programovacího jazyka python provést implementaci kódu haldy.

Jak funguje Heap Sort v Pythonu?

  • Před vysvětlením fungování Pythonu je důležité pochopit, co to vlastně je a jak se liší od jiných třídících algoritmů. Heapsort lze považovat za přístup k třídění, ve kterém je zjištěna maximální hodnota ze seznamu a přesunuta na poslední z pole a proces je opakován, dokud není seznam převeden do tříděného seznamu. způsob, kterým se liší od ostatních metod třídění, není ničím jiným než přístupem, který následuje za účelem třídění všech hodnot pole. Skládá se z rekurzivního procesu, který trvá, dokud nejsou hodnoty v poli uspořádány vzestupně.
  • Nyní pomocí příkladu ukážeme, jak funguje řazení haldy podrobně. Předpokládejme, že arr je pole, které drží hodnoty jako 9, 5, 2. Na začátku nejsou hodnoty pole uspořádány seřazeným způsobem, ale po provedení řazení haldy bude převedeno do vzestupného pořadí. Když se na toto pole použije algoritmus řazení haldy, bude to první věc, kterou najde, abychom našli naši největší hodnotu v poli. Protože 9 je největší hodnota, bude přesunuta do posledního indexu seznamu a všechny ostatní hodnoty se posunou o jeden krok doleva, aby se vytvořil prostor pro uložení největší hodnoty. Jakmile je 9 posunut do posledního příchodu indexu nebo pole, bude seznam hodnot vypadat jako 5, 2, 9.
  • Nyní pole stále není tříděno, což znamená, že stejný proces musí být opakován znovu. Nyní při hledání největší hodnoty ze seznamu nezpracovaných hodnot bude 5 vybrána jako druhá největší hodnota a bude přesunuta do druhého posledního indexu. Po přesunutí 5 na druhou poslední pozici se pole změní na tříděné pole a hodnoty se uspořádají ve sestavě vzestupně jako 2, 5, 9. Takto funguje řazení haldy. Ve skutečnosti to identifikuje maximální hodnotu a přesune ji na konec pole a pokračuje ve stejném procesu, dokud se pole nezmění na tříděné pole.

Příklady implementace řazení haldy v Pythonu

Chcete-li se naučit koncepci haldy, pochopte ji pomocí skutečného příkladu. Implementujeme algoritmus řazení haldy pomocí jazyka python. Abychom mohli program vyvinout, použijeme smyčku for k zavedení rekurzního mechanismu a použijeme-li kontrolu podmínek k ověření podmínek. V níže uvedeném kódu je funkce perform_heapsort funkcí, která přijímá tři argumenty: val_arr, num a count, kde var_arr je pole, zatímco num a count jsou celočíselného datového typu. Myšlenka níže uvedeného kódu je najít největší číslo a dočasně ho držet v proměnné max_val, dokud se nepřesune na konec pole. Pokud byl použit příkaz k zajištění toho, že se největší hodnota posouvá na příslušné místo a že tato pozice je blokována, aby nebyla aktualizována o další největší hodnotu v seznamu. Program zopakuje přístup k nalezení největší hodnoty a její posunutí na konec, dokud se seznam nenaladí na seřazenou.

Kód:

def perform_heapsort(val_arr, num, count):
max_val = count
counter1 = 2 * count + 1
counter2 = 2 * count + 2
if counter1 < num and val_arr(count) < val_arr(counter1):
max_val = counter1
if counter2 < num and val_arr(max_val) < val_arr(counter2):
max_val = counter2
if max_val != count:
val_arr(count), val_arr(max_val) = val_arr(max_val), val_arr(count) perform_heapsort(val_arr, num, max_val)
def heapSort(val_arr):
num = len(val_arr)
for count in range(num, -1, -1):
perform_heapsort(val_arr, num, count)
for count in range(num-1, 0, -1):
val_arr(count), val_arr(0) = val_arr(0), val_arr(count) # swap
perform_heapsort(val_arr, count, 0)
val_arr = ( 52, 91, 64, 252, 36, 91, 5, 35, 28) heapSort(val_arr)
num = len(val_arr)
print ("Values after performing heapsort")
for count in range(num):
print ("%d" %val_arr(count)),

V tomto programu byly hodnoty přiřazeny ručně prostřednictvím kódu. Var_arr je pole obsahující hodnoty. V tomto příkladu jsme k poli přiřadili 9 hodnot. Hodnoty v poli budou předány metodě s názvem perform_heapsort. Jakmile hodnoty zadají metodu, bude zpracována a program začne hledat největší hodnotu ze seznamu. Maximální hodnota v tomto poli je 252, takže bude přesunuta na konec pole a tento proces bude aplikován na všechny hodnoty, dokud se pole nezmění na tříděné pole. Jakmile je pole seřazeno podle programu, výstup se zobrazí na výstupu.

Výstup:

Závěr

Heapsort je jedním z různých třídicích algoritmů. Konečným výstupem tohoto algoritmu je tříděný seznam, který má data uspořádána ve vzestupném pořadí. Protože se proces opakuje a pokaždé, když jsou všechny hodnoty posunuty doleva, aby se upravila maximální hodnota seznamu na konci pole, považuje se to za méně účinný algoritmus třídění. Tento přístup k třídění lze využít v aplikaci, která má zpracovat malý počet hodnot.

Doporučené články

Toto je průvodce hromadou haldy v Pythonu. Zde diskutujeme úvod do Hromadného řazení v Pythonu, Jak funguje Hromadné řazení v Pythonu a příklady implementace Hromadného řazení v Pythonu. Další informace naleznete také v dalších navrhovaných článcích.

  1. Co je to informatika?
  2. Co je strojové učení?
  3. Zabezpečení webových aplikací
  4. Funkce Pythonu
  5. Průvodce tříděním algoritmů v Pythonu

Kategorie: