堆排序算法的过程演示

作者:袖梨 2022-07-02

/*
  Name:  heapsort2.c
  Author:       zhuqing
  Description:       堆排序算法的过程演示 
  Date: 18-08-03 09:50
  Copyright:
*/

#include
#define N 6
int k,j;
/* 建堆函数 */
void build(int *a,int i,int n){
    int tmp;
    k=i;
    j=2*k+1;
    while(j<=n){
        if(j            j++;
        if(a[k]>=a[j])break;
        tmp=a[k];
        a[k]=a[j];
        a[j]=tmp;       
        k=j;
        j=2*j+1;
    }
}
/* 打印数组函数 */
void prnt(int *a,int n){
    int i;
    printf("n");
    for(i=0;i        printf("%3d",a[i]);
    }
    printf("n");
}
/* 打印堆函数 */
void prnthp(int *a,int b1,int b2){
    int size;
    int h=0,sum=0,item=1;
    int i,j,cnt,start,tmp;
    size=b2-b1+1;
    while(sum<=size){
        sum+=item;
        h++;
        item*=2;
    }
    item=1;
    cnt=0;
    start=b1;
    tmp=1;
    printf("n--------------------------------------------n");   
    printf("  堆:n");
    while(1){
        for(i=0;i                for(j=0;j      &nbs

相关文章

精彩推荐