C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Найдите ошибку. плиз!, сортировка массива методом кучи
H-O-M-R
Отправлено: 22.11.2004, 21:32


Не зарегистрирован







Есть алгоритм сортировки массива с помощью кучи — из "Ослика" (Т.кормен, Ч.Лейзерсон, Р.Ривест). Вроде делаю как надо а не работает...уже запарился. Поправьте меня:
#include
int n;
int largest;
int l,r;
int heapi(double A[10], int i)
{
l=2*i;
r=2*i+1;
if(l {
if ((A[l]>A[i]) && (l<=n))
{
largest=l;
}
else largest=i;
if (A[r]>A[largest] && r<=n)
{
largest=r;
}
if (largest != i)
{
A[i]=A[largest];
heapi(A,largest);
}
}
return 0;
}
int main()
{
int n,i;
double A[10];
printf("\nEnter a quantity element n=");
scanf("%d", &n);
if (n<2 || n>10)
{
printf("Error! 2<=n<=10!\n");
return 1;
}
printf("\nEnter sense of element:\n");
for(i=0; i {
printf("A[%d]=",i);
scanf("%d",&A[i]);
}
n=A[n];
for (i=n/2; i>0; i--)
{
heapi(A,i);
}
for (i=n; i>=2; i--)
{
A[i]=A[0];
n=n-1;
heapi(A,1);
}
printf("\nThe new rejection array:\n");
for(i=0; i printf("A[%d]=%d\n",i,A[i]);
getchar();
}
AVC
Отправлено: 23.11.2004, 09:06


Ветеран

Группа: Модератор
Сообщений: 1583



Для начала прогоните свой код через компилятор посмотрите на ошибки и попытайтесь их понять. Если после этого останутся вопросы — заходите smile.gif
.piero
Отправлено: 26.11.2004, 23:26


Дежурный стрелочник

Группа: Участник
Сообщений: 62



новое поколение совсем не учится писать красиво, сравните

H-O-M-R:

for(i=0; i printf("A[%d]=%d\n",i,A[i]);

.piero:

CODE

for (i = 0; i printf ("A[%d] = %d\n", i, A[i]);


а вообще-то АВЦ прально говорит — писать стоит ошибки компилятора после исходника.. многим просто в лом запукать.. компилить... писать ответы...
Guest
Отправлено: 01.12.2004, 08:47


Не зарегистрирован







У тебя если и сортируется, то КОПИЯ исходного массива. Вспомни, как передаются параметры в Си.
Дальше сам разберешься.

Вернуться в Вопросы программирования в C++Builder