| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1089 人关注过本帖
标题:数字排序中数据元素比较方法,出了问题,请高手赐教
只看楼主 加入收藏
Lc_fox
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-11-20
收藏
 问题点数:0 回复次数:16 
数字排序中数据元素比较方法,出了问题,请高手赐教

以下是代码部分

#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 结果未排序 请高手赐教
搜索更多相关主题的帖子: 元素 数字 数据 
2005-11-23 23:44
Lc_fox
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-11-20
收藏
得分:0 
  没人帮我吗

Rove_Pro 流浪与编程 http://post.baidu.com/f?kw=rove_pro
2005-11-24 00:24
ghy2001
Rank: 1
等 级:新手上路
威 望:1
帖 子:87
专家分:0
注 册:2005-10-30
收藏
得分:0 
j = k;
if (i != j)
这2句为什么要?看不懂.

2005-11-24 09:31
Lc_fox
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-11-20
收藏
得分:0 
他的本意是想降低程序的时间复杂度  减少外循环的循环次数  可是程序是有问题的

Rove_Pro 流浪与编程 http://post.baidu.com/f?kw=rove_pro
2005-11-24 10:51
jinhua545
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-11-20
收藏
得分:0 
++i?
2005-11-24 11:15
cranky
Rank: 1
等 级:新手上路
威 望:1
帖 子:89
专家分:0
注 册:2005-11-21
收藏
得分:0 
没找到原因!!期待中,哥们不过这程序写得有点说不出的原因

一个不知道天高地厚,想问什么时候才是满壶水的鬼 --------------半壶水响叮当
2005-11-24 16:54
cranky
Rank: 1
等 级:新手上路
威 望:1
帖 子:89
专家分:0
注 册:2005-11-21
收藏
得分:0 
数字排序中数据元素比较方法,出了问题,请高手赐教
if(i!=j)
{
......
j=i;//在j=k的时候,j被改变了,不需要让他还原吗? 加人这一句就OK了
}

一个不知道天高地厚,想问什么时候才是满壶水的鬼 --------------半壶水响叮当
2005-11-24 20:47
大水牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:233
专家分:0
注 册:2005-11-21
收藏
得分:0 

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


虽然现在的我什么都不明白,但总有一天,我将包容一切,让优秀变成一种习惯。。。。。。。。。。。。
2005-11-24 21:42
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
差不多就是“冒泡排序法” 不过 程序中有些地方给变形了,楼主好好看看书吧

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2005-11-24 23:01
rove_pro
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-11-24
收藏
得分:0 

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

2005-11-24 23:04
快速回复:数字排序中数据元素比较方法,出了问题,请高手赐教
数据加载中...
 
   



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

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