Увод у сорту хеап-а у Ц ++

Хеапсорт је једна од техника поређења заснована на поређењу и део је селекцијске сорте. Где је сортирање дефинисано као уређивање скупова података по одређеном редоследу користећи јединствену вредност познату као кључни елемент на датој листи. Појам сортирање је уведен како су људи упознали важност претраживања било ког елемента у било којем скупу информација, иначе било би врло тешко претражити било који запис ако је неуређен и некоришћен.

Много је различитих техника укључених у сортирање које имају своју ефикасност у времену потребном за сортирање датих података и потребе за простором у меморији. Они су сорти са мехурићима, сортирање уметања, сортирање селекције, брзо сортирање, сортирање сортирања и сортирање група.

Шта је сорта гомиле?

Хеапсорт је приступ разврставању заснован на структури података бинарне хрпе сличан врсти селекције где прво добијамо максималан део података и постављамо га на крај, а настављамо за остале елементе.

Наговештај, као што и само име говори. Прво гради гомилу елемената података из датог несортираног низа, а затим проверава највећу ставку и поставља је на крај делимично сортиране матрице. Поновно обнавља гомилу, тражи следећи највећи део записа и смешта га у следећи празан утор са краја упола сортираног распореда записа. Овај се поступак понавља све док у хрпи нису остали предмети. Ова техника захтева два низа, један за чување гомиле, а други за разврстани низ.

Алгоритам хеап сортирања у Ц ++

  • Прво изаберите роот као уздигнути елемент из датог скупа информација како бисте створили максималан скуп.
  • Реконструишите хрпу постављањем или разменом корена са последњим елементом.
  • Величина гомиле ће се сада смањити за 1.
  • Затим поново правимо хрпу с преосталим елементима и настављамо док величина гомиле не буде смањена на 1.

Пример сортирања гомиле у Ц ++

Ова техника користи бинарну гомилу која је конструисана користећи комплетно бинарно дрво где је коријенски чвор већи од његова два дјечја чворова.

Размотрите дати низ података.

Кренимо према алгоритму. Каже да одаберете највиши елемент као корен и направите максималну гомилу.

1. Прва Итерација

Сада ће низ бити у облику:

Сада ће сортирани низ бити облика:

Величина гомиле ће бити смањена за 1, сада је 6-1 = 5.

2. Друга Итерација

Дакле, сада гомила изгледа:

Низ је облика:

Сортирани низ ће бити:

Величина гомиле ће бити смањена за 1, сада је 5-1 = 4.

3. Трећа Итерација

Нова гомила изгледа овако:

Низ је облика:

Сортирани низ ће бити:

Величина гомиле ће бити смањена за 1, сада је 4-1 = 3.

4. Четврта Итерација

Нова гомила изгледа овако:

Низ је облика:

Сортирани низ ће бити:


Величина гомиле ће бити смањена за 1, сада је 3-1 = 2.

5. Пета Итерација

Нова гомила изгледа овако:

Низ је облика:

Сортирани низ ће бити:

Величина гомиле ће бити смањена за 1, сада је 2-1 = 1.

6. Последња Итерација

Нова гомила изгледа овако:

Низ има:

4

Из алгоритма смо извели све кораке све док величина гомиле не буде 1. Дакле, сада имамо сортирани низ:


Стога је разврстани низ максималне гомиле у узлазном редослиједу. Ако нам је потребан низ сортиран силазним редоследом, слиједимо горе наведене кораке с минималном гомилом.

Ц ++ програм за разврставање хеап је наведен у наставку:

#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);
)

Излаз:

Закључак

Хеапсорт је техника која се заснива на поређењу и побољшава селекционо сортирање. Хеап сортирање користи избор највишег или најнижег елемента у датој матрици да би се сортирали узлазним или силазним редоследом, односно максималним или минималним хеапом. Извршите овај поступак док не добијемо један у величини. Ова техника сортирања се такође користи да би се пронашао највећи и најнижи елемент у низу. Техника сортирања у хрпи је ефикаснија и бржа од технике сортирања у хрпи.

Препоручени чланци

Ово је водич за сортирање хеаппа у Ц ++. Овде смо расправљали о томе шта је врста хеоп-а у ц ++, радећи са његовим алгоритмом и Примером. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Поредај на Ц
  2. Хеап Сорт ин Јава
  3. Преоптерећење у Ц ++
  4. Показивачи у Ц ++
  5. Преоптерећење у Јави

Категорија: