Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. int main(){
  2.     static const size_t SIZE = 8;
  3.     int arr[] = { 13, 14, 15, 18, 11, 12, 17, 16};
  4.     //int arr[] = { 13, 1, 15};
  5.    
  6.     cout << height(arr, SIZE);
  7.     subHeap(arr, 0, SIZE);
  8.     //heapify(arr, SIZE);
  9.     cout << "---\n";
  10.     for (size_t i = 0; i < SIZE; i++){
  11.         cout << arr[i] << endl;
  12.     }
  13.     return 0;
  14. }
  15.  
  16. size_t left(size_t index){
  17.     return (2 * index) + 1;
  18. }
  19. size_t right(size_t index){
  20.     return (2 * index) + 2;
  21. }
  22. size_t parent(size_t index){
  23.     return (index - 1) / 2;
  24. }
  25. size_t height(int array[], size_t size){
  26.     size_t indexer = 0;
  27.     size_t count = 0;
  28.     size_t sizer = size - 1;
  29.     while (indexer < sizer){
  30.         count++;
  31.         indexer = left(indexer);
  32.     }
  33.     return count;
  34. }
  35. void subHeap(int array[], size_t index, size_t size){
  36.         if (array[left(index)] > array[index] && left(index) < size){
  37.             int h = array[index];
  38.             array[index] = array[left(index)];
  39.             array[left(index)] = h;
  40.             index = left(index);
  41.             subHeap(array, index, size);
  42.         }
  43.         else if (array[right(index)] > array[index] && right(index) < size){
  44.             int h = array[index];
  45.             array[index] = array[right(index)];
  46.             array[right(index)] = h;
  47.             index = right(index);
  48.             subHeap(array, index, size);
  49.  
  50.         }
  51.         else{
  52.             return;
  53.         }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement