# Counter Heap Sort

• 10-09-2002
Achillles
Counter Heap Sort
Hey I have this code and it counts 2 but i think it should count more then that see what you guys think
Code:

```#include <stdlib.h> #include <stdio.h> #define num_items 75 int heapSort(int numbers[], int array_size,int counter); void siftDown(int numbers[], int root, int bottom); int numbers[num_items]; int main() { int i,counter; rand(); for(i=0; i < num_items; i++) {         numbers[i]=rand(); } counter=0; counter = heapSort(numbers, num_items, counter); printf("Done with Sort.\n"); for(i=0; i < num_items; i++) { printf("%i\n", numbers[i]); } printf("Counter=%i\n", counter); } int heapSort(int numbers[], int array_size, int counter) { int i, j, temp; for(i=(array_size/2)-1; i >=0; i--) {         siftDown(numbers,i,array_size);   counter++;                 for(j=1; j<=1; j++)       {       counter++;                 for(i=array_size-1; i>=1; i--)       {       temp=numbers[0];       numbers[0]=numbers[i];       numbers[i]=temp;                 siftDown(numbers, 0, i-1);                 }     }         }         return counter; } void siftDown(int numbers[], int root, int bottom) { int done, maxChild, temp; done=0; while((root*2 <=bottom) && (!done)) { if(root*2 == bottom) maxChild=root*2; else if (numbers[root*2] > numbers[root*2+1]) maxChild=root*2; else maxChild=root*2+1; if(numbers[root] < numbers[maxChild]) { temp=numbers[root]; numbers[root]=numbers[maxChild]; numbers[maxChild]=temp; root=maxChild; } else done=1; } }```
• 10-09-2002
shuesty
I didn't look at your code long enough to completely understand it but I found some problems with it. There's a reason for only getting 2 ... it's because you don't actually sort the numbers.

Look at the three for loop in heap sort. The for loop with j is only setup to run once ... is that what is supposed to happen?? Secondly the other two use the same index number. The third for loop will run until i gets to 1. Then when the initial loop try the condition it fails and it jumps out of the sort. Fix those two and your program will run MUCH better.