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; } }



LinkBack URL
About LinkBacks


