标题:用数组对N个数的排序
只看楼主
水里无氧气
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-3-26
 问题点数:0 回复次数:8 
用数组对N个数的排序
#define  N10
#include  <stdio.h>
void main()
{
  int i,j,min,temp,a[N];
  i=N;
  printf("输入%d个数字:"\n",i);
  for(i=0;i<N;i++)
      scanf("%d",&a[i];
 for(i=0;i<N;i++)
{
  min=i;
  for(j=i+1;j<N;j++)     /*?*/
  {
   if(a[j]<a[min])
       min=j;
  }
  if(min==i)
 continue;              /*?*/
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf
for(i=0;i<N;i++)
{
printf("%3d",a[i]);
}
printf("\n);
}
这个程序中?到?之间的算法是怎么得来的不懂,还请高手指点
搜索更多相关主题的帖子: continue include 
2005-06-03 18:46
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
得分:0 
自己一步一步推!~

2005-06-03 20:04
majian258
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-4-5
得分:0 
这个算法的思想是:首先令原数组的a[0]为最小值,然后,令它与a[1]比较,若a[0]小,则不变,若大于,则把a[1]标号赋值给min(该变量用来存放最小数组元素的标号),接着,再让a[min]与a[2]比较,同上,谁小,就把谁的标号赋值给min,如此循环,直到和最后一个数组元素比较。如此一轮下来后,min里面存放的就是最小数组元素的标号,若其不等于原先的值(此为0),则与a[0]的值对换.以上是把整个数组的最小值存入a[0]的过程,接着再从a[1]到a[9]比较,这一轮是找出除了a[0]以外的最小值的过程,把找到的结果存入a[1],如此反复下去,直到a[9]. 两个?号之间的程序就是我刚才一开始说的比较一轮找出该轮的最小值并赋值的过程。 大致情况是这样的,中间可能说的比较模糊或有错误的地方,还希望你能自己慢慢研究,真正掌握,加油~
2005-06-03 21:09
EA_Games
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:539
专家分:0
注 册:2005-3-13
得分:0 
以下是引用majian258在2005-6-3 21:09:13的发言: 这个算法的思想是:首先令原数组的a[0]为最小值,然后,令它与a[1]比较,若a[0]小,则不变,若大于,则把a[1]标号赋值给min(该变量用来存放最小数组元素的标号),接着,再让a[min]与a[2]比较,同上,谁小,就把谁的标号赋值给min,如此循环,直到和最后一个数组元素比较。如此一轮下来后,min里面存放的就是最小数组元素的标号,若其不等于原先的值(此为0),则与a[0]的值对换.以上是把整个数组的最小值存入a[0]的过程,接着再从a[1]到a[9]比较,这一轮是找出除了a[0]以外的最小值的过程,把找到的结果存入a[1],如此反复下去,直到a[9]. 两个?号之间的程序就是我刚才一开始说的比较一轮找出该轮的最小值并赋值的过程。 大致情况是这样的,中间可能说的比较模糊或有错误的地方,还希望你能自己慢慢研究,真正掌握,加油~
楼上的精神可嘉。授之以鱼?授之以渔?这个问题很早就提出来过,能做到像楼上这样的没有几个,俺也没做到,经常自己写好给别人,这对自己对别人都没什么帮助。俺得向楼上的学习。。敬佩中...

2005-06-03 22:11
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
这个是选择排序来的:
for(i=0;i<N-1;i++)
{
  min=i;
  for(j=i+1;j<N;j++)     
  {
   if(a[j]<a[min])
       min=j;
  }
  if(min!=i)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}

c++/C + 汇编 = 天下无敌
2005-06-04 11:51
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
这个可是排序中最容易的了,有时间看数据结构吧.

c++/C + 汇编 = 天下无敌
2005-06-04 11:55
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
得分:0 
   晕了。这个也拿出来发。。。。郁闷~~~~

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-06-05 08:04
难得糊涂
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-6-5
得分:0 
再多看几个这样的例程,也许会熟悉一点吧!
2005-06-05 14:20
达达
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-5-26
得分:0 
你这到底是夸 还是贬 啊?

2005-06-05 15:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-20021-1-1.html




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

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