Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main(){
- static const size_t SIZE = 8;
- int arr[] = { 13, 14, 15, 18, 11, 12, 17, 16};
- //int arr[] = { 13, 1, 15};
- cout << height(arr, SIZE);
- subHeap(arr, 0, SIZE);
- //heapify(arr, SIZE);
- cout << "---\n";
- for (size_t i = 0; i < SIZE; i++){
- cout << arr[i] << endl;
- }
- return 0;
- }
- size_t left(size_t index){
- return (2 * index) + 1;
- }
- size_t right(size_t index){
- return (2 * index) + 2;
- }
- size_t parent(size_t index){
- return (index - 1) / 2;
- }
- size_t height(int array[], size_t size){
- size_t indexer = 0;
- size_t count = 0;
- size_t sizer = size - 1;
- while (indexer < sizer){
- count++;
- indexer = left(indexer);
- }
- return count;
- }
- void subHeap(int array[], size_t index, size_t size){
- if (array[left(index)] > array[index] && left(index) < size){
- int h = array[index];
- array[index] = array[left(index)];
- array[left(index)] = h;
- index = left(index);
- subHeap(array, index, size);
- }
- else if (array[right(index)] > array[index] && right(index) < size){
- int h = array[index];
- array[index] = array[right(index)];
- array[right(index)] = h;
- index = right(index);
- subHeap(array, index, size);
- }
- else{
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement