用c++实现堆排序

原创 2017年01月03日 22:57:58

参考数据结构与算法分析,实现堆排序

堆排序的思想如下,先构建一个最大堆,本文默认的为最大堆,即父节点是最大的,而左右子树的大小则没有明确的区分,然后实现排序

#include <iostream>
using namespace std;
void heapsort(int A[],int i,int N)
{
int child,temp=10;
//int child;
//for(int temp=A[i];2*i+1<N;i=child)
for(temp=A[i];2*i+1<N;i=child)
   {
   child=2*i+1;
   if(child!=(N-1)&&A[child+1]>A[child])
     child++;
   if(temp<A[child])
    A[i]=A[child];
   else
    break;
  }
   A[i]=temp;
}

int main()
{
int A[7]={31,41,59,26,53,58,97};
for(int i=7/2;i>=0;i--)
  heapsort(A,i,7);

for(int i=6;i>=0;i--)
{
  int  temp=A[i];
     A[i]=A[0];
     A[0]=temp;
    heapsort(A,0,i);
}
for(int i=0;i<7;i++)
cout<<A[i]<<" ";
cout<<endl;
return 0;
}

通过上述的方法,可以实现堆排序




版权声明:本文为博主原创文章,未经博主允许不得转载。

c++实现堆排序

在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面: 一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。垃圾收集存储区,是软件系统可以编程的内存区域。 本文所说...

堆排序c++实现,编译通过

  • 2012年11月09日 23:07
  • 859B
  • 下载

C++实现堆、最大堆、最小堆 -- 堆排序插入删除操作

堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。 最大堆和最小堆是二叉堆的两种形式。 最大堆:根结点的键值是所有堆结点键值中最大者。 最小堆:根结...

堆排序 c++实现 可运行

  • 2015年08月11日 22:36
  • 2KB
  • 下载

c++实现堆排序

  • 2012年10月20日 23:05
  • 553KB
  • 下载

c++手动和STL实现堆排序

好久没看最小堆和最大堆了
  • yezizp
  • yezizp
  • 2014年07月02日 17:08
  • 525

C++堆排序的实现

  • 2012年11月30日 17:17
  • 3KB
  • 下载

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

堆排序(Heap sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以用到上一次的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用c++实现堆排序
举报原因:
原因补充:

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