堆排序

原创 2013年12月05日 14:47:33

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;
}


相关文章推荐

堆排序之Java实现

  • 2017年07月27日 17:03
  • 4KB
  • 下载

堆排序法.cpp

  • 2015年07月26日 12:45
  • 2KB
  • 下载

假期小算法--堆排序(啊哈算法)

#include const int SIZE_ARRAY = 101; int heap[SIZE_ARRAY] = {0}; // 堆中元素 int n;//堆中元素个数 //交换函数 v...

堆排序及其用途

  • 2016年03月25日 13:46
  • 214KB
  • 下载

堆排序算法c语言实现

  • 2015年10月25日 14:24
  • 2KB
  • 下载

[算法与数据结构] - No.6 堆排序

首先,什么叫堆呢? 堆 ( Heap )设有一个关键字集合,按完全二叉树的顺序存储方式存放在一个一维数组中。对它们从根开始,自顶向下,同一层自左向右从 1开始连续编号。若满足            K...

堆排序

  • 2014年12月25日 21:57
  • 205KB
  • 下载

堆排序算法导论

  • 2013年11月11日 23:54
  • 152KB
  • 下载

Java 堆排序(大顶堆、小顶堆)

引用:http://lib.csdn.net/article/datastructure/8973 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结...
  • Sun_Ru
  • Sun_Ru
  • 2016年07月23日 14:10
  • 4686

堆排序算法

  • 2013年10月27日 09:53
  • 5KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:堆排序
举报原因:
原因补充:

(最多只允许输入30个字)