Вступ до сортування купи в C ++

Heapsort є однією з методів сортування на основі порівняння і є частиною сортування селекції. Де сортування визначається як упорядкування наборів даних у певному порядку, використовуючи унікальне значення, відоме як ключовий елемент у даному списку. Термін сортування був введений, коли люди дізналися про важливість пошуку будь-якого елемента в будь-якому даному наборі інформації, інакше було б дуже важко шукати будь-який запис, якби він був не упорядкованим і несортованим.

Існує безліч різних методик, які беруть участь у сортуванні, які мають свою ефективність у часі, необхідному для сортування даних та вимоги місця в пам'яті. Вони бувають сортування бульбашок, сортування вставки, сортування вибору, швидке сортування, сортування злиття та сортування купи.

Що таке сорт купи?

Heapsort - це підхід до сортування, що базується на структурі даних бінарної купи, подібній сортуванню вибору, де ми спочатку отримуємо максимальний набір даних та розміщуємо його в кінці та продовжуємо для решти елементів.

Хепсорт, як підказує сама назва. Він спочатку будує купу елементів даних із заданого несортованого масиву, а потім перевіряє найбільший елемент і розміщує його в кінці частково відсортованого масиву. Він знову відновлює купу, шукає наступний найбільший фрагмент запису і розміщує його в наступному порожньому слоті з кінця наполовину відсортованого розташування записів. Цей процес повторюється, поки в купі не залишиться жодних предметів. Ця методика вимагає двох масивів, один для зберігання купи, а другий для відсортованого масиву.

Алгоритм купа сортування в C ++

  • По-перше, виберіть корінь як підвищений елемент із заданого набору елементів, щоб створити максимальну купу.
  • Реконструюйте купу, розмістивши або замінивши корінь з останнім елементом.
  • Розмір купи тепер зменшиться на 1.
  • Потім ми знову робимо купу з елементами, що залишилися, і продовжуємо, поки розмір купи не зменшиться до 1.

Приклад сортування купи в C ++

Ця методика використовує двійкову купу, яка побудована за допомогою повного двійкового дерева, де кореневий вузол більший, ніж два його дочірні вузли.

Розглянемо даний масив наборів даних.

Поїдемо за алгоритмом. Він говорить про те, щоб вибрати найвищий елемент як корінь та побудувати максимальну купу.

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. Отже, тепер ми маємо відсортований масив:


Тому відсортований масив максимальної купи знаходиться у порядку зростання. Якщо нам потрібен масив, відсортований у порядку зменшення, то виконайте наведені вище кроки з мінімальною купою.

Програма C ++ для сортування купи наведена нижче:

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

Вихід:

Висновок

Heapsort - це метод порівняння на основі порівняння селекційного сортування. Сортування купи використовує вибір найвищого або найнижчого елемента в даному масиві для сортування у порядку зростання або зменшення відповідно з максимальним або мінімальним набором. Проводьте цей процес, поки ми не отримаємо його в розмірі купи. Цей метод сортування також використовується для пошуку найбільшого і найнижчого елемента в масиві. Техніка сортування в купі більш ефективна і швидша, ніж техніка сортування відбору.

Рекомендовані статті

Це посібник по сортуванню купи в C ++. Тут ми обговорюємо, що це сортування купи в c ++, працюючи зі своїм алгоритмом та прикладом. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Сортування купи в С
  2. Сортування купи в Java
  3. Перевантаження в C ++
  4. Покажчики на C ++
  5. Перевантаження в Java