当前位置: 代码迷 >> C语言 >> c语法 3次优化后的冒泡法
  详细解决方案

c语法 3次优化后的冒泡法

热度:197   发布时间:2005-11-26 21:37:00.0
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  

----------------解决方案--------------------------------------------------------
冒泡法是一种效率较差的选择方法

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

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

cpu的消耗大

不提倡

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

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

就是一种很糟糕的算法了!

----------------解决方案--------------------------------------------------------

起泡法?


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
2楼说的对啊
----------------解决方案--------------------------------------------------------

有点点没明白

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++;
}
}
}


----------------解决方案--------------------------------------------------------
   j = k;   ?这个有什么用啊?
----------------解决方案--------------------------------------------------------
j = k 本来我想通过j来控制外循环次数呢 循环体内有一个语句是判断如果数据已经有序则退出外循环

这样又可以减少时间复杂度
----------------解决方案--------------------------------------------------------

牛!!


----------------解决方案--------------------------------------------------------
  相关解决方案