堆排序
来源:互联网 发布:淘宝转运仓单号填错 编辑:程序博客网 时间:2024/06/07 08:02
代码示例:
#include<iostream>
using namespace std;
void Adjust(int *a,int s,int m )
{
int t=a[s];
int j;
for(j=2*s;j<m;j++)
{
if(a[j]<a[j+1]) j++;
if(t>a[j]) break;
a[s]=a[j];
s=j;
}
a[s]=t;
}
void heapsort(int *a,int n)
{
int i;
for( i=n/2;i>=0;i--)
Adjust(a,i,n);//构建初始大顶堆
while(n>=1)
{
swap(a[0],a[n-1]);
cout<<a[n-1]<<endl;
n--;
Adjust(a,0,n-1);
}
}
int main()
{
int a[10]={5,3,2,7,8,9,6,2};
heapsort(a,8);
return 0;
}
堆排序在最坏的情况下,其时间复杂也为O(nlogn).相对于快速排序来说,这是堆排序的最大优点。此外,堆排序仅需一个记录大小供交换用的辅助空间。
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- Ubuntu命令行下安装、卸载、管理软件包的方法
- Kinect到底如何识别人脸
- windows下,使用netbeans远程连接solaris11开发C++,并且使用DTrace工具
- 从头学Android之Android的数据存储--SharedPreferences
- Spring bean里的parent属性
- 堆排序
- 华为手机logcat不出日志解决方案
- Android之SurfaceView
- linux下给文件设置权限
- 在 FlashDevelop 的移动项目 (Adobe AIR) 中使用 ane
- android的TabActivity
- flex内阴影效果
- Cross Platform library in C++ for Windows, WM, WinCE, MacOS, iPhone
- 相约世纪末