| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4025 人关注过本帖
标题:[困惑]怎样对一组不确定个数的数据进行排序???
只看楼主 加入收藏
编程怪兽
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-4-28
收藏
得分:0 
回复:(nuciewth)以下是引用编程怪兽在2007-5-5 9:0...

可以在输入数据的时候用while控制的
附程序如下:
#include "stdio.h"
#define N 100
void main()
{
int j,a[N],k,x;
int num=0,i=0;
printf("如果你想结束数字的输入,请输入-1\n");
printf("请输入数字");
scanf("%d",&x);
while(x!=-1)
{
a[i]=x;
num=num+1;
i++;
printf("请输入数字");
scanf("%d",&x);
}//输入数据,并且存到数组a中
for(i=0;i<num-1;i++)
for(j=i+1;j<num;j++)
if (a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
for(i=0;i<num;i++)
printf("%d\n",a[i]);
}
当然当数字个个数超过100时这个函数,你可以将N改为你所需的大小,我想100差不多了!


2007-05-05 22:30
cyl_jay
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2007-5-2
收藏
得分:0 
回复:(编程怪兽)回复:(nuciewth)以下是引用编程...
这种方法也行,我运行过了,while里面的scanf("%d",&x);
是什么意思啊,有点没看懂这条语句.能不能解释一下!
2007-05-06 01:04
kisaa
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-5
收藏
得分:0 
回复:(cyl_jay)[困惑]怎样对一组不确定个数的数据...
#include "stdio.h"
#define N 100
main()
{int i,n,*p;
int a[N];
printf("input n\n");
scanf("%d",&n);
printf("you insert n are\n ");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
p=a;
paixu(p,n);
printf("the answer\n");
for(p=a,i=0;i<n;i++)
printf("%d\t",*p++);
}
paixu(int *p,int n)
{int i,j,k,temp;
for(i=0;i<n-1;i++)
{for(j=0;j<n-i;j++)
{if(*(p+j)<*(p+j+1))
{temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;}
}
}
return;
}

行者天涯悟逍遥,无疆圣景未铭心。
2007-05-06 09:50
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
可以用链表么

羊肉串 葡萄干 哈密瓜!!
2007-05-06 10:24
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
可能大家误解我的意思了.
我是说你要写个程序循环接收数据,那到底怎么结束你的输入.
文件输入,和非法中断,还有设置标记退出都不能完整的表达.

像编程怪兽在11楼说的,他凭什么不让-1参加排序.

福尔摩斯在5楼说的还是没有解决怎么结束数据输入.

mp3aaa 可以解决固定数组的问题,但还是不能解决LZ的问题,而且,链表排序要比数组的难的多.


倚天照海花无数,流水高山心自知。
2007-05-06 11:03
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用cyl_jay在2007-5-6 1:04:18的发言:
这种方法也行,我运行过了,while里面的scanf("%d",&x);
是什么意思啊,有点没看懂这条语句.能不能解释一下!

scanf();输入正确的话就继续,如果输入数据非法就退出.


倚天照海花无数,流水高山心自知。
2007-05-06 11:06
zy1437zy
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-4-25
收藏
得分:0 
以下是引用编程怪兽在2007-5-5 22:30:02的发言:

可以在输入数据的时候用while控制的
附程序如下:
#include "stdio.h"
#define N 100
void main()
{
int j,a[N],k,x;
int num=0,i=0;
printf("如果你想结束数字的输入,请输入-1\n");
printf("请输入数字");
scanf("%d",&x);
while(x!=-1)
{
a[i]=x;
num=num+1;
i++;
printf("请输入数字");
scanf("%d",&x);
}//输入数据,并且存到数组a中
for(i=0;i<num-1;i++)
for(j=i+1;j<num;j++)
if (a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
for(i=0;i<num;i++)
printf("%d\n",a[i]);
}
当然当数字个个数超过100时这个函数,你可以将N改为你所需的大小,我想100差不多了!


首先,我也是个新手

其次,以上各位大侠:
对于你们的学术讨论我很欣赏,
不过楼主的问题根本是基于一个简单型,
编程怪兽
是对的,

2007-05-06 13:08
zy1437zy
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-4-25
收藏
得分:0 
以下是引用mp3aaa在2007-5-6 10:24:48的发言:
可以用链表么

对链表中的数据排序好象的确很复杂!

2007-05-06 13:13
feilong0611
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-5-19
收藏
得分:0 
我能理解nuciewth心情,以前我也遇到同样的问题.
同问!
2007-05-08 00:59
feilong0611
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-5-19
收藏
得分:0 

其实,仔细想想,数组和链表的区别就是:数组是静态的,其长度是固定,操作简单快速;而链表是动态的,长度是不固定的,操作复杂且慢.我想这个问题就要利用链表可能更好点.

2007-05-08 09:36
快速回复:[困惑]怎样对一组不确定个数的数据进行排序???
数据加载中...
 
   



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

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