ヒープソートの作り方を教えてください。
ヒープへのデータ挿入と最大値の取り出しは作れたのですが、
これらを組み合わせて作ることは出来無いでしょうか?

データ挿入
void insert(int x,int *ary,int *n){
int p,k,tmp;
k = *n; ary[k] = x;
while(k > 0){
p = (k-1)/2;
if(ary[p] < ary[k]){
tmp = ary[k]; ary[k] = ary[p]; ary[p] = tmp;
k = p;
}
else break;
}
*n = *n+1;
}