Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  Heap_New
Language: C/C++
Code:
#include <iostream>  
#include <algorithm>  
#include <clocale> 
#define NMAX 50001  
using namespace std;  
int arr[NMAX+1];  

void heapify (int pos, int n) {  
    while (2 * pos + 1 < n) {  
          
        int t = 2 * pos +1;  
        if (2 * pos + 2 < n && arr[2 * pos + 2] >= arr[t])  
        {  
            t = 2 * pos + 2;  
        }  
        if (arr[pos] < arr[t]) {  
            swap(arr[pos], arr[t]);  
            pos = t;  
        }   
        else break;  
          
    }  
}  

void heap_make(int n)  
{  
    for (int i = n - 1; i >= 0; i--)  
    {  
        heapify(i, n);  
    }  
}  
void heap_sort(int n)  
{int m;
     m=n;  
    heap_make(n);  
    while(n>0)  
    {  
        swap(arr[0],arr[n-1]);  
        n--;  
        heapify(0,n);  
    }   
cout<<"a[n] AFTER SORT:";cout<<endl; 
 for(int i = 0; i < m; i ++)  
    {  
        cout <<  arr[i]<<" ";  
    } cout<<endl; 

}  
int input(int n){
for(int i = 0; i < n; i ++)  
    {  
        cout<<"a["<<i+1<<"]=";  
     cin>> arr[i];  
     cout<<endl; 
    } 
cout<<"a[n] BEFORE SORT:"<<endl; 
for(int i = 0; i < n; i ++)  
    {cout<<arr[i]<<" ";}cout<<endl; 

int main()  
{       
     setlocale(LC_ALL, "Russian"); 
     int n;     
     cout<<"Vvod Razmera massiva:"<<endl;
     cin>>n;
     if(n>1) { 
     input(n);  
    heap_sort(n);  
   } 
     else {cout<<"Neverno zadan massiv"<<endl;} 
     system("pause");  
    return 0;  
}  

          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
Comments: