Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void HeapSort(int number[], int n);
- void MaxHeap(int number[], int n, int i);
- void Print(int number[], int n);
- int main()
- {
- int n, i;
- cout<<"Enter the number of data element to be sorted: ";
- cin>>n;
- int data[n];
- for(i = 0; i < n; i++)
- {
- cout<<"Enter element "<<i+1<<": ";
- cin>>data[i];
- }
- cout<<endl<<"BEFORE SORTED : ";
- Print(data, n);
- HeapSort(data, n);
- cout<<"AFTER SORTED : ";
- Print(data, n);
- return 0;
- }
- void MaxHeap(int number[], int n, int i)
- {
- int t;
- int largest = i;
- int l = 2*i + 1;
- int r = 2*i + 2;
- if (l < n && number[l] > number[largest])
- {
- largest = l;
- }
- if (r < n && number[r] > number[largest])
- {
- largest = r;
- }
- if (largest != i)
- {
- t = number[i];
- number[i] = number[largest];
- number[largest] = t;
- MaxHeap(number, n, largest);
- }
- }
- void HeapSort(int number[], int n)
- {
- int t;
- for (int i = n / 2 - 1; i >= 0; i--)
- {
- MaxHeap(number, n, i);
- }
- for (int i=n-1; i>=0; i--)
- {
- t = number[0];
- number[0] = number[i];
- number[i] = t;
- MaxHeap(number, i, 0);
- }
- }
- void Print(int number[], int n)
- {
- for (int i=0; i<n; ++i)
- {
- cout << number[i] << " ";
- }
- cout <<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement