您的位置:首页 > 其它

楼主,不知道为什么这么流行

2009-03-12 01:17 453 查看
基本思想:
将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从上往下扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。




相关代码如下:

void sort(int *p,int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
if(p[j]>p[j+1])
{
p[j]+=p[j+1];
p[j+1]=p[j]-p[j+1];
p[j]=p[j]-p[j+1];
}
}
实际我们在用时可以考虑一下效率问题,比如可以简单的改写为:

void sort(int *p,int n)
{
int i,j,flag;
for(i=0;i<n-1;i++)
{
flag=0;
for(j=0;j<n-1;j++)
if(p[j]>p[j+1])
{
p[j]+=p[j+1];
p[j+1]=p[j]-p[j+1];
p[j]=p[j]-p[j+1];
flag=1;
}
if(flag==0) break;/*如果本轮循环没有发生数据交换,表示已经有序,没有必要进行未完成的工作*/
}
}
当然还不够完善,在进一步更改对于我们基本编程学习来说就不太“经济”了。就此打住。本文出自 “计算机编程开发” 博客,请务必保留此出处http://wangwenlong.blog.51cto.com/372835/76643
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: