堆排序算法

原创 2012年03月30日 19:38:39
#include <iostream>
#include <stdlib.h>
#include <assert.h>
#include <string.h>


void siftDown(int * str, int start, int end);
void heapify(int * str,int count);
void heapSort(int * str, int count);
void printStr(int * str, int count);
void exchange(int * str, int a, int b);

void printStr(int * str, int count)
{
    for(int i=0;i<count;i++)
    {
        std::cout<<str[i]<<" ";
    }
    std::cout<<std::endl;
}
void exchange(int * str, int a, int b)
{
    str[a]=str[a]+str[b];
    str[b]=str[a]-str[b];
    str[a]=str[a]-str[b];
}
void heapSort(int * str, int count)
{
    heapify(str, count);
    int end=count-1;
    while(end>0)
    {
        exchange(str,0,end);
        end--;
        siftDown(str,0,end);
    }
}
void heapify(int * str,int count)
{
    int start=(count-2)/2;
    while(start>=0)
    {
        siftDown(str,start,count-1);
        start--;
    }
}
void siftDown(int * str, int start, int end)
{
    int root=start;
    int swap;
    int child;
    while(root*2+1<=end)
    {
        child=root*2+1;
        swap=root;
        if(str[swap]<str[child])
        {
            swap=child;
        }
        if(child+1<=end&&str[swap]<str[child+1])
        {
            swap=child+1;
        }
        if(swap!=root)
        {
            exchange(str,swap,root);
            root=swap;
        }
        else
        {
            return;
        }
    }
}

int main()
{
    int str[8]={6,8,1,7,4,5,3,2};
    heapSort(str,8);
    printStr(str,8);
}


堆排序算法c语言实现

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

堆排序算法导论

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

基于数组的堆排序算法的C语言实现

基于数组的堆排序

堆排序算法

  • 2013年10月27日 09:53
  • 5KB
  • 下载

堆排序算法详细配图讲解

  • 2013年12月18日 21:11
  • 556KB
  • 下载

java堆排序算法(小根堆)

这几天学习堆排序算法,主要是引用老师的方法进行编写的,通过多线程和管道通信(即java的PipedInputStream和PipedOutputStream)来实现大量数据的排序 1、首先是将数据分...

堆排序算法实现

  • 2014年06月16日 14:08
  • 1001KB
  • 下载

堆排序算法 java

  • 2013年10月11日 10:10
  • 976B
  • 下载

C++ 堆排序算法的实现与改进(含笔试面试题)

堆排序(Heap sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以用到上一次的...

堆排序算法源代码

  • 2012年02月01日 00:31
  • 7KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:堆排序算法
举报原因:
原因补充:

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