堆排序

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


排序算法(七)——堆排序

基本思想 堆排序是一种树形选择排序,是对直接选择排序的改进。   首先,我们来看看什么是堆(heap): (1)堆中某个节点的值总是不大于或不小于其父节点的值; (2)堆总是一棵完全二叉树(Compl...
  • u012152619
  • u012152619
  • 2015年08月13日 08:39
  • 13759

【Python排序搜索基本算法】之堆排序

堆是一种完全二叉树,堆排序是一种树形选择排序,利用了大顶堆堆顶元素最大的特点,不断取出最大元素,并调整使剩下的元素还是大顶堆,依次取出最大元素就是排好序的列表。举例如下,把序列[26,5,77,1,6...
  • littlethunder
  • littlethunder
  • 2014年04月16日 21:47
  • 8771

堆排序(Heapsort)之Java实现

堆排序算法介绍 堆是一种重要的数据结构,为一棵完全二叉树, 底层如果用数组存储数据的话,假设某个元素为序号为i(Java数组从0开始,i为0到n-1), 如果它有左子树,那么左子树的位置是2i+1,如...
  • kimylrong
  • kimylrong
  • 2013年12月05日 22:25
  • 52896

堆排序

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

数据结构堆排序

  • 2017年12月24日 10:27
  • 1KB
  • 下载

堆排序之Java实现

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

堆排序法.cpp

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

堆排序及其用途

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

堆排序算法c语言实现

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

堆排序算法导论

  • 2013年11月11日 23:54
  • 152KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:堆排序
举报原因:
原因补充:

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