| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:c语法 3次优化后的冒泡法
只看楼主 加入收藏
rove_pro
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-11-24
收藏
 问题点数:0 回复次数:8 
c语法 3次优化后的冒泡法

#include <stdio.h>
#define dmax 7

int main ()
{
int i, k, sum[dmax], w, j, z = 0;

for (i=0; i<dmax; ++i)
{
printf("shu ru di %d ge shu:",i+1);
scanf("%d",&sum[i]);
}

for (i=dmax-1; i>0; --i)
{
for (k=j=0; k<i; ++k)
{
if (sum[k] < sum[k+1])
{
w = sum[k];
sum[k] = sum[k+1];
sum[k+1] = w;
j = k;
z++;
}
}
}

printf("\n");

for (i=0; i<dmax; ++i)
{
printf("%d ",sum[i]);
}
printf("\n%d",z);
return 0;
}


原代码我就不发了,以上算法是冒泡法的改进

搜索更多相关主题的帖子: 语法 sum 冒泡 dmax 
2005-11-26 21:37
hackercuiye
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-26
收藏
得分:0 
冒泡法是一种效率较差的选择方法

程序实现的时候,代码的长度比较长

程序运行的时候 计算机的工作时间长

cpu的消耗大

不提倡

对于数据型的操作还可以将就

但是对于文件 数组(2、3维等) 指针等 就不容易实现了

就是一种很糟糕的算法了!
2005-11-26 22:56
rove_pro
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-11-24
收藏
得分:0 

起泡法?

2005-11-27 09:44
星夜
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-11-17
收藏
得分:0 

我们正在学 但我觉得没有其他的快


曾经自由的双子星,现已陨落。。。。。。
2005-11-27 11:29
星夜
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-11-17
收藏
得分:0 
2楼说的对啊

曾经自由的双子星,现已陨落。。。。。。
2005-11-27 11:31
cranky
Rank: 1
等 级:新手上路
威 望:1
帖 子:89
专家分:0
注 册:2005-11-21
收藏
得分:0 

有点点没明白

for (i=dmax-1; i>0; --i)
{
for (k=j=0; k<i; ++k)
{
if (sum[k] < sum[k+1])
{
w = sum[k];
sum[k] = sum[k+1];
sum[k+1] = w;
j = k; //请教,这句话是什么意思啊?没看懂
z++;
}
}
}


一个不知道天高地厚,想问什么时候才是满壶水的鬼 --------------半壶水响叮当
2005-11-27 15:13
jinhua545
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-11-20
收藏
得分:0 
   j = k;   ?这个有什么用啊?
2005-11-27 19:55
rove_pro
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-11-24
收藏
得分:0 
j = k 本来我想通过j来控制外循环次数呢 循环体内有一个语句是判断如果数据已经有序则退出外循环

这样又可以减少时间复杂度
2005-11-27 21:40
zwk035
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-10-28
收藏
得分:0 

牛!!

2005-11-30 17:40
快速回复:c语法 3次优化后的冒泡法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048713 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved