PDA

View Full Version : سوال: این الگوریتم چه کاری انجام میدهد؟!



smartie7
شنبه 07 خرداد 1390, 21:14 عصر
سلام ...

دوستان لطف کنید این الگوریتم رو توضیح بدید.

کار مرتب سازی رو انجام میده ولی نمیدونم چطور این کار رو میکنه!

لطفاً نحوه ی کارش رو توضیح بدید.

مرتضی تقدمی
چهارشنبه 11 خرداد 1390, 12:58 عصر
این جوری بهتره :



#include<iostream.h>
#include<conio.h>


void heap(float *x,float *pf,float *w,int m)

{

int i,z;
float temp,t;
z=m;
x[0]=0;
pf[0]=0;
w[0]=0;
int pos,j;
for(j=1;j<z;j++)
{
pos=2;
for(i=2;i<=m;i++)
{
while((x[pos]>x[(pos)/2])&&pos>1)
{
temp=x[pos];
x[pos]=x[(pos)/2];
x[(pos)/2]=temp;

temp=pf[pos];
pf[pos]=pf[(pos)/2];
pf[(pos)/2]=temp;
temp=w[pos];
w[pos]=w[(pos)/2];
w[(pos)/2]=temp;

pos=pos/2;
}

pos=i+1;
}

t=x[1];
x[1]=x[m];
x[m]=t;
t=pf[1];
pf[1]=pf[m];
pf[m]=t;
t=w[1];
w[1]=w[m];
w[m]=t;
m--;
}