关闭

堆排序

402人阅读 评论(0) 收藏 举报
分类:

heapsort.h

#ifndef HEAPSORT_H_INCLUDED
#define HEAPSORT_H_INCLUDED
 
#define  MAXSIZE  1000
 
typedef  struct
{
    int  R[MAXSIZE];
    int  length;
}sqlist;
typedef  sqlist  *Sqlist;
 
void  Swap(Sqlist  L,int i,int j);
void  heapadjust(Sqlist  L,int i,int j);
void  heapsort(Sqlist  L);
 
 
 
#endif // HEAPSORT_H_INCLUDED

heapsort.c

#include  <stdio.h>
#include  <malloc.h>
#include  "heapsort.h"
 
void  Swap(Sqlist  L,int i,int j)
{
    int  temp;
    temp=L->R[i];
     L->R[i]= L->R[j];
     L->R[j]=temp;
}
 
void  heapadjust(Sqlist  L,int s,int m)
{
    int  temp,j;
 
    temp= L->R[s];
 
    for(j=2*s;j<=m;j =2*j)
    {
        if(j<m &&  L->R[j]<  L->R[j+1])
            ++j;
 
        if(temp >=  L->R[j])
            break;
         L->R[s]= L->R[j];
         s=j;
    }
 
     L->R[s]=temp;
 
}
 
void  heapsort(Sqlist  L)
{
    int i;
    for(i=(L->length)/2;i>0;i--)
        heapadjust(L,i,L->length);
 
    for(i=L->length; i>1;i--)
    {
        Swap(L,1,i);
        heapadjust(L,1,i-1);
    }
}

main.c

#include <stdio.h>
#include <stdlib.h>
#include  "heapsort.c"
 
 
int main()
{
    int  i;
    int  d[10]={50,30,21,44,65,52,78,42,78,90};
    Sqlist  L=(Sqlist  )malloc(sizeof(sqlist));
    L->length=10;
    for(i=0;i <10;i++)
    {
 
        L->R[i+1]=d[i];
    }
 
    heapsort(L);
 
    for(i=1;i <=10;i++)
        printf("%d\t",L->R[i]);
 
     getchar() ;
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:69392次
    • 积分:1462
    • 等级:
    • 排名:千里之外
    • 原创:73篇
    • 转载:22篇
    • 译文:0篇
    • 评论:12条
    最新评论