# Array Heap Sort

Email
 Submitted on: 1/7/2015 2:58:00 PM By: Debjit Kar (from psc cd) Level: Beginner User Rating: By 4 Users Compatibility: C, C++ (general) Views: 4101

Sorting an array using heap sort

code:
Can't Copy and Paste this?
 ``` //************************************** // Name: Array Heap Sort // Description:Sorting an array using heap sort // By: Debjit Kar (from psc cd) //************************************** #include //prototype void fnSortHeap(int[], int); //main void main() { int i, arr_num_items; int arr[] = {7,10,25,17,23,27,16,19,37,42,4,33,1,5,11}; //total number of items in array. //if you do not provide the exact number you might get unwanted results arr_num_items = 15; //call fnSortHeap function for (arr_num_items - 2) times. for(i=arr_num_items; i>1; i--) { fnSortHeap(arr, i - 1); } //print the sorted array printf("\nThe Sorted Array\n----------------\n"); for (i = 0; i < arr_num_items; i++) printf("%d\n",arr[i]); return; } //sort heap void fnSortHeap(int arr[], int arr_ubound) { int i,o; int lChild, rChild, mChild, root, temp; //find the root element of the current element root = (arr_ubound-1)/2; //creating the heap for(o=root;o>=0;o--) { for(i=root;i>=0;i--) { lChild = (2*i)+1; rChild = (2*i)+2; if ((lChild <= arr_ubound) && (rChild <= arr_ubound)) { if(arr[rChild] >= arr[lChild]) mChild = rChild; else mChild = lChild; } else { if(rChild > arr_ubound) mChild = lChild; else mChild = rChild; } //swap elements if (arr[i] < arr[mChild]) { temp = arr[i]; arr[i] = arr[mChild]; arr[mChild] = temp; } } } //move the max element to the end of the array temp = arr[0]; arr[0] = arr[arr_ubound]; arr[arr_ubound] = temp; return; }```

Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

What do you think of this code (in the Beginner category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)