Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int getParent(int i){
- return (i-1)/2;
- }
- int getLeft(int i){
- return 2*i+1;
- }
- int getRight(int i){
- return 2*i+2;
- }
- void heapify (int arr[], int size, int i){
- int left = getLeft(i);
- int right = getRight(i);
- int largest = i;
- if (left < size && arr[left] > arr[i]){
- largest = left;
- }
- else{
- largest = i;
- }
- if(right < size && arr[right] > arr[largest]){
- largest = right;
- }
- if(largest != i){
- swap(arr,i,largest);
- heapify(arr,size,largest);
- }
- }
- void buildMaxHeap(int arr[], int size){
- for(int i = size/2 -1; i >= 0; i--){
- heapify(arr,size,i);
- }
- }
- void heapSort(int arr[], int n){
- buildMaxHeap(arr,n);
- for(int i = n - 1; i > 0; i--){
- swap(arr,0,i);
- heapify(arr,i,0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement