عنوان 

 سورس برنامه

توضیحات : مرتب‌سازی هرمی (Heap ) یکی از روش‌های مشهور مرتب‌سازی داده‌ها است که بر اساس خصوصیات درخت heap (هیپ، هرم یا کپه) و عملکرد آن پیاده‌سازی شده است.
بر اساس تعریف درخت heap، در یک max-heap (یا min-heap) بزرگترین (یا کوچکترین) مقدار بین داده‌ها همواره در ریشه‌ی درخت قرار دارد. یافتن بزرگترین (یا کوچکترین) عنصر بین عناصر، هزینه‌ی ثابت ( Ө( ۱ دارد. با حذف این عنصر از درخت، بزرگترین (یا کوچکترین) عنصر بعدی مجددا در ریشه قرار می‌گیرد. به این ترتیب با حذف متوالی عناصر درخت heap و درج آنها در محل جدید، یک آرایه‌ی مرتب‌شده‌ی نزولی (یا صعودی) به دست خواهد آمد.

نوع فایل

فرمت

سورس زبان

CPP , EXE

پیش نمایش از پروژه

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define N 20
void main()
{
int a[N],i,j,n,K,l,Q;
clrscr();
cout<<“Enter no. of elements :”;
cin>>n;
//—————Create Heap————————
randomize();
for(i=0;i<n;i++)
{
//cout<<endl<<i<<” ) “;
//cin>>K;
K=rand()%15;
cout<<endl<<i<<” ) “<<K;
j=i;
while(a[(j-1)/2]>K && j>0)
{
a[j]=a[(j-1)/2];
j=(j-1)/2;
}
a[j]=K;
cout<<“–>”;
for(l=0;l<=i;l++)
{
cout<<” “<<a[l];
}
}
//—————————————————————-
//———————-Heap_sort———————————
cout<<“\n————-\n”;
for(Q=n-1;Q>0;Q–)
{
K=a[Q]; //—-Swap first & last—
a[Q]=a[0];
a[0]=K;

i=0;
j=1;

K=a[0]; // <—–Not required———

if(j+1 < Q) // —– check right child—-
if(a[j+1]<a[j])
j++;

while(j<=Q-1 && a[j]<K)
{
//l=a[i]; //—-Swap root & child—
a[i]=a[j];
//a[j]=l;

i=j; //—— root <== child
j=j*2 + 1;

if(j+1 < Q)
{
if(a[j+1] < a[j])
j++;
}
//else if(j>n) // <===== j=n;

// \/ a[i]=K;
}

}

Heap-Sort

======