当前位置: 代码迷 >> C语言 >> 数字排序中数据元素比较方法,出了问题,请高手赐教
  详细解决方案

数字排序中数据元素比较方法,出了问题,请高手赐教

热度:195   发布时间:2005-11-23 23:44:00.0
数字排序中数据元素比较方法,出了问题,请高手赐教

以下是代码部分

#include <stdio.h>
#define dmax 6 //待排序的数字的个数

int main (void)
{
int i, j, k, w, sum[dmax];

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

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

printf("\ncong da dao xiao pai xu:\n");
for (i=0; i<dmax; ++i)
{
printf("%d ",sum[i]);
}
return 0;
}


编译环境是VC6.0 结果未排序 请高手赐教
搜索更多相关的解决方案: 元素  数字  数据  

----------------解决方案--------------------------------------------------------
  没人帮我吗
----------------解决方案--------------------------------------------------------
j = k;
if (i != j)
这2句为什么要?看不懂.

----------------解决方案--------------------------------------------------------
他的本意是想降低程序的时间复杂度  减少外循环的循环次数  可是程序是有问题的
----------------解决方案--------------------------------------------------------
++i?
----------------解决方案--------------------------------------------------------
没找到原因!!期待中,哥们不过这程序写得有点说不出的原因
----------------解决方案--------------------------------------------------------
数字排序中数据元素比较方法,出了问题,请高手赐教
if(i!=j)
{
......
j=i;//在j=k的时候,j被改变了,不需要让他还原吗? 加人这一句就OK了
}

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

凡是++i的地方都要改成i++
我先说说他的思想吧、
我粗看了一下他的程序,好象他的思想是:先是输入6个数然后依次赋值,第2步循环依次取前面的数和相邻后边数比较,把大的值赋给后面的,小的值给前面的,循环结束以后,输出
他的很多语句不是很“纯”原谅我的用词,给我的感觉就是这样
我觉的排序有很多经典的算法,楼主可以看看学习学习,


----------------解决方案--------------------------------------------------------
差不多就是“冒泡排序法” 不过 程序中有些地方给变形了,楼主好好看看书吧
----------------解决方案--------------------------------------------------------

#include <stdio.h>
#define dmax 4

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

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

for (i=0; i<dmax; ++i)
{
j = i;
for (k=0; k<i; ++k)
{
if (sum[k] < sum[j])
j = k;
if (j != i)
{
w = sum[j];
sum[j] = sum[i];
sum[i] = w;
}
}
}

printf("\n");

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


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