想了两天,终于把堆排序搞懂了。
2010-04-27 09:15
225 查看
//堆排序
#include<iostream>
#define MAX 100
using namespace std;
void display(int a[],int n);
void silt(int a[],int n,int m)
{
int t;
t=a[m];
int j=2*(m+1)-1;
// display(a,n);
while(j<=n)
{
while(j<n && a[j]<a[j+1])//=
j++;
if(t<a[j])
{
a[m]=a[j];
m=j;
j=2*(j+1)-1;
}
else
j=n+1;
}
a[m]=t;
display(a,n);
}
void ssort(int a[],int n)
{
int m=n/2;
for(int i=m-1;i>=0;i--)
{
silt(a,n-1,i);
}
for(int i=n-1;i>=0;i--)
{
int temp=a[0];a[0]=a[i];a[i]=temp; //把最小的放到尾部。
silt(a,i-1,0);
}
}
void display(int a[],int n)
{
for(int i=0;i<=n;i++)
{
// cout<<"a["<<i<<"]="<<a[i]<<" ";
cout<<a[i]<<" ";
}
cout<<endl;
}
int main()
{
int a[]={2,8,3,6,9,5,1,4,0,7};
int n=10;
ssort(a,n);
// silt(a,n,(n/2));
display(a,n);
return 0;
}
#include<iostream>
#define MAX 100
using namespace std;
void display(int a[],int n);
void silt(int a[],int n,int m)
{
int t;
t=a[m];
int j=2*(m+1)-1;
// display(a,n);
while(j<=n)
{
while(j<n && a[j]<a[j+1])//=
j++;
if(t<a[j])
{
a[m]=a[j];
m=j;
j=2*(j+1)-1;
}
else
j=n+1;
}
a[m]=t;
display(a,n);
}
void ssort(int a[],int n)
{
int m=n/2;
for(int i=m-1;i>=0;i--)
{
silt(a,n-1,i);
}
for(int i=n-1;i>=0;i--)
{
int temp=a[0];a[0]=a[i];a[i]=temp; //把最小的放到尾部。
silt(a,i-1,0);
}
}
void display(int a[],int n)
{
for(int i=0;i<=n;i++)
{
// cout<<"a["<<i<<"]="<<a[i]<<" ";
cout<<a[i]<<" ";
}
cout<<endl;
}
int main()
{
int a[]={2,8,3,6,9,5,1,4,0,7};
int n=10;
ssort(a,n);
// silt(a,n,(n/2));
display(a,n);
return 0;
}
相关文章推荐
- Lua的闭包详解(终于搞懂了)
- 终于搞懂js中cookie的一些处理方法。
- zoj 3506 Cut the Tree (好多细节的树形dp 终于把你搞懂了)
- 终于搞懂了,预编译头文件(precompiled header)
- Ubuntu11.04 32位 下用android-ndk-r8b 编译ffmpeg-1.1 (之前摸索了两天(大部分文章都太乱太杂),终于参考这边文档,编译完成了....)
- 经过两天的艰苦奋斗终于完成了数据库的备份功能
- winform 远程连接oracle方式 弄了两天终于成功!!
- 终于搞懂了,预编译头文件(precompiled header)
- 花了整整两天时间,终于把GCC下的一个开源项目移植到VC6.0下了
- 帮同学改一个jsp网站,弄了两天终于发现原因,呵呵
- 终于搞懂了CSS实现三角形图标的原理
- 这两天终于把火箭动力稍微搞清楚了点
- 连续两天,终于完成第六章~指针
- 我今天终于搞懂了Linux上安装oracle时修改的系统参数是什么意思了
- 经过两天的努力,终于写出了第一个android的helloword
- 终于搞懂了,预编译头文件(转)
- 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获
- 手机里竟然有这么多传感器!终于都搞懂了
- [2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决
- 弄了两天,终于出来了android模拟器 AVD