Почему эта куча не работает?
#include<stdio.h> struct node{ int item; }; int N; void Max_Heapify( struct node StrArr[] , int i ) { //printf("i=%d\n",i); int LC=2*i; int RC=(2*i)+1; int Largest; //printf("Values i %d,LC %d, Rc %d,"); if( LC<=N && StrArr[LC].item > StrArr[i].item ) { Largest=LC; } if( RC<=N && StrArr[RC].item > StrArr[LC].item ) { Largest = RC; } //printf("Largest %d\n\n"); if( Largest != i ){ int temp = StrArr[Largest].item ; StrArr[Largest].item = StrArr[i].item ; StrArr[i].item = temp ; Max_Heapify(StrArr, Largest) ; } } void Build_Max_Heap( struct node StrArr[] ) { int i; for( i=N/2 ; i >= 1 ; i-- ){ //printf("Call %d:\n",i); Max_Heapify( StrArr , i); } } void HeapSort( struct node StrArr[] ) { Build_Max_Heap(StrArr); while(N>=1) { int temp = StrArr[1].item ; StrArr[1].item = StrArr[N].item ; StrArr[N].item = temp ; printf("%d ",StrArr[N].item); Max_Heapify( StrArr , 1); N=N-1; } } main() { printf("Enter size of the Array:"); scanf("%d",&N); struct node StrArr[N]; int i; printf("\nEnter Elements of the Array- "); for( i = 1 ; i <= N ; i++ ) { scanf("%d",&StrArr[i].item); } /*for( i = 1 ; i <= N ; i++ ) { printf("%d",StrArr[i].item); }*/ printf("\nArray After HeapSort:"); HeapSort(StrArr); }
Что я уже пробовал:
Когда я попробовал это сделать,значения, хранящиеся в LC и RC, не являются правильными...!
Patrice T
определите "значение, хранящееся в LC и RC, неверно...!"