Uvod u sortu gomile u C ++

Heapsort je jedna od tehnika sortiranja na temelju usporedbe i dio je selekcijske sorte. Tamo gdje je razvrstavanje definirano kao uređivanje skupa podataka u određenom redoslijedu koristeći jedinstvenu vrijednost poznatu kao ključni element na navedenom popisu. Pojam sortiranja uveden je kako su ljudi upoznali važnost pretraživanja bilo kojeg elementa u bilo kojem skupu informacija, inače bilo bi vrlo teško pretraživati ​​bilo koji zapis ako je bio neuredan i neortoriran.

Mnogo je različitih tehnika uključenih u razvrstavanje koje imaju svoju efikasnost u vremenu potrebnom za razvrstavanje danih podataka i zahtjeva prostora u memoriji. Oni su sortiranje mjehurića, sortiranje umetanja, sortiranje odabira, brzo sortiranje, sortiranje sortiranja i sortiranje skupina.

Što je sorta gomile?

Heapsort je pristup razvrstavanju temeljen na strukturi podataka binarne hrpe sličan vrsti selekcije gdje prvo dobijemo maksimalan dio skupa podataka i stavimo ga na kraj te nastavimo s ostalim elementima.

Nagluha kao što samo ime govori. Prvo gradi hrpu podatkovnih elemenata iz danoga nesortiranog niza, a zatim provjerava najveću stavku i stavlja je na kraj djelomično sortirane matrice. Ponovno obnavlja gomilu, traži sljedeći najveći komad zapisa i smješta ga u sljedeći prazni utor s kraja upola poredanog rasporeda zapisa. Ovaj se postupak ponavlja sve dok u hrpi nisu ostali predmeti. Ova tehnika zahtijeva dva niza: jedan za pohranu hrpe, a drugi za razvrstani niz.

Algoritam heap sortiranja na C ++

  • Prvo odaberite korijen kao povišeni element iz danog informativnog skupa elemenata da biste stvorili maksimalni skup.
  • Rekonstruirajte hrpu postavljanjem ili izmjenjivanjem korijena s posljednjim elementom.
  • Veličina hrpe sada će se smanjiti za 1.
  • Zatim ponovno napravimo gomilu s preostalim elementima i nastavljamo dok veličina gomile ne bude smanjena na 1.

Primjer sortiranja gomile u C ++

Ova tehnika koristi binarnu gomilu koja je izrađena pomoću kompletnog binarnog stabla gdje je korijenski čvor veći od njegova dva dječja čvorova.

Razmotrite dati niz podataka.

Krenimo prema algoritmu. Kaže da odaberete najviši element kao korijen i napravite maksimalnu gomilu.

1. Prva Iteracija

Sada će niz biti u obliku:

Sada će sortirani niz biti u obliku:

Veličina gomile smanjit će se za 1, sada je 6-1 = 5.

2. Druga Iteracija

Dakle, sada gomila izgleda:

Niz je oblika:

Poredani niz će biti:

Veličina gomile smanjit će se za 1, sada je 5-1 = 4.

3. Treća Iteracija

Nova gomila izgleda ovako:

Niz je oblika:

Poredani niz će biti:

Veličina gomile smanjit će se za 1, sada je 4-1 = 3.

4. Četvrta Iteracija

Nova gomila izgleda ovako:

Niz je oblika:

Poredani niz će biti:


Veličina gomile smanjit će se za 1, sada je 3-1 = 2.

5. Peta Iteracija

Nova gomila izgleda ovako:

Niz je oblika:

Poredani niz će biti:

Veličina gomile smanjit će se za 1, sada je 2-1 = 1.

6. Posljednja Iteracija

Nova gomila izgleda ovako:

Niz ima:

4

Iz algoritma smo izveli sve korake sve dok veličina hrpe nije 1. Dakle, sada imamo sortirani niz:


Stoga je razvrstani niz maksimalne hrpe u uzlaznom redoslijedu. Ako nam je potreban niz sortiran silaznim redoslijedom, slijedimo gore navedene korake s minimalnom skupom.

C ++ program za razvrstavanje hrpe je kako je dan u nastavku:

#include
using namespace std;
void heapify(int arr(), int n, int i)
(
int largest = i;
int l = 2 * i + 1;
int r = 2 * i + 2;
if (l arr(largest))
largest = l;
if (r arr(largest))
largest = r;
if (largest != i) (
swap(arr(i), arr(largest));
heapify(arr, n, largest);
)
)
void heapSort(int arr(), int n)
(
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
for (int i = n - 1; i >= 0; i--)
(
swap(arr(0), arr(i));
heapify(arr, i, 0);
)
)
void printArray(int arr(), int n)
(
for (int i = 0; i < n; ++i)
cout << arr(i) << " ";
cout << "\n";
)
int main()
(
int arr() = ( 5, 18, 4, 13, 10, 7);
int n = sizeof(arr) / sizeof(arr(0));
heapSort(arr, n);
cout << "Sorted array is \n";
printArray(arr, n);
)

Izlaz:

Zaključak

Heapsort je tehnika koja se temelji na usporedbi, a poboljšava selekcijsko razvrstavanje. Heap sortiranje koristi odabir najvišeg ili najnižeg elementa u danoj matrici za sortiranje u uzlaznom ili silaznom redoslijedu, odnosno s maksimalnim ili minimalnim heapom. Provedite ovaj postupak dok ne dobijemo jedan u veličini hrpe. Ova tehnika sortiranja koristi se i za pronalaženje najvećeg i najnižeg elementa u nizu. Tehnika sortiranja u hrpi je učinkovitija i brža od tehnike sortiranja u hrpi.

Preporučeni članci

Ovo je vodič za sortiranje gomile u C ++. Ovdje ćemo raspravljati o tome što je heap vrsta u c ++, radeći s njegovim algoritmom i primjerom. Možete pogledati i sljedeće članke da biste saznali više -

  1. Poredaj na C
  2. Poredaj u Javi
  3. Preopterećenje u C ++
  4. Pokazivači u C ++
  5. Preopterećenje u Javi

Kategorija: