楼主,不知道为什么这么流行
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
将被排序的记录数组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
相关文章推荐
- 为什么Node.js会这么火呢?Node.js流行的原因
- 真不知道自己为什么会这么开心
- Docker究竟是什么 为什么这么流行 它的优点和缺陷有哪些?
- 不知道为什么,这么写就对了的------MSSQL引号和时间日期
- paip.php 与js 的相似性以及为什么它们这么烂还很流行。。
- paip.php 与js 的相似性以及为什么它们这么烂还很流行。。
- 为什么Node.js会这么火呢?Node.js流行的原因
- Go语言为什么这么流行?
- windows OS 为什么这么流行
- 1.1—Java这么流行,知道为什么嘛?!
- Go语言为什么这么流行?
- ELK 为什么这么流行?
- 程序员转行为什么这么难
- 就你不知道之:为什么是回车,而不是回马
- 程序猿转行为什么这么难
- linux为什么这么火
- [转]开源软件为什么没有流行起来?
- windows server为什么不流行?
- WebService为什么不如RESTful API流行