设计一种算法来修复数组的元素并使用有效的堆排序技术对剩余数进行置换

我尝试自己解决代码,但显示出一些错误。我也不确定逻辑是否正确。 基本上,我们必须交换左父元素和右子元素,并与父元素交换它们,以便输出是所有可能的排列。这是我的代码:

#include<iostream>

using namespace std;
void swap(),swapp(),swappp(),outputArr(),heapsort(),outputArr();
void heapfunc(int[], int,int);
int n, a[0];
void max_heapify(int a[],int n,int largest){

    int left,right;
    left=2*largest+1;
    right=2*largest+2;
        swap();

}
void heapsort(int a[],int n)
{
    int i;
    for(i=n+1/2;i>=1;i--)
        int largest=i;
        max_heapify(a,n,i);

}

    void swap(int left, int right,int i){
        int boom=a[left];
        a[left]=a[right];
        a[right]=boom;
        void outputArr();
        void heapsort(int a[],int n);
        swapp();
     }
    void swapp(int i,int left){
        int boom=a[left];
        a[left]=a[i];
        a[i]=boom;
        void outputArr();
        swappp();
    } 
    void swappp(int i,int right){
       int boom=a[right];
        a[right]=a[i];
        a[i]=boom;
        void outputArr();
    } 

void outputArr(int a[],int n){
    for(int j=0; j<n; j++){
        cout<<"{"<<a[j]<<",";
    }
    cout<<"}\n";
}
int main(){

    cout<<"Enter array size: ";
    cin>>n;
    cout<<"Enter elements: ";
    for(int j=0; j<n; j++){
        cin>>a[j];
    }
    void heapsort(int,int);
    return 0;
}