Heapsort tartiblash - bu ikkilik uyum ma'lumotlar tuzilishiga asoslangan taqqoslashga asoslangan tartiblash usuli . Bu birinchi navbatda minimal elementni topadigan va minimal elementni boshiga joylashtirgan tanlash tartibiga o'xshaydi . Qolgan elementlar uchun xuddi shu jarayonni takrorlang.
heapsort tartiblash - bu o'z joyida algoritm.
Uning odatiy amalga oshirilishi barqaror emas, lekin barqaror bo'lishi mumkin ( qarang )
Odatda yaxshi amalga oshirilgan QuickSort ga qaraganda 2-3 baravar sekinroq . Sekinlik sababi - mos yozuvlar joyining yo'qligi.
Heapsortning afzalliklari:
Samaradorlik - Uyma tartibini bajarish uchun zarur bo'lgan vaqt logarifmik ravishda oshadi, boshqa algoritmlar esa saralanadigan elementlar soni ortishi bilan eksponent ravishda sekinlashishi mumkin. Ushbu tartiblash algoritmi juda samarali.
Xotiradan foydalanish - Xotiradan foydalanish minimal, chunki saralanadigan elementlarning dastlabki ro'yxatini saqlash uchun zarur bo'lgan narsalardan tashqari, ishlash uchun qo'shimcha xotira maydoni kerak emas.
Oddiylik - Boshqa teng darajada samarali tartiblash algoritmlariga qaraganda tushunish osonroq, chunki u rekursiya kabi ilg'or informatika tushunchalaridan foydalanmaydi.
Uyma tartiblashning kamchiliklari:
Qimmatli : yig'ish tartibi qimmat.
Beqaror : Issiqlik navi beqaror. Bu nisbiy tartibni o'zgartirishi mumkin.
#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;
Do'stlaringiz bilan baham: |