标题:[求助]排序算法出了点问题
只看楼主
youniankang
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-7-18
 问题点数:0 回复次数:16 
[求助]排序算法出了点问题

#include<stdio.h>
void main()
{
int num[5];
int temp;
printf("请输入5个数字: ");
for(int k=0;k<5;k++)
{
scanf("%d",num[k]);
}
for(int i=0;i<4;i++)
{
for(int j=0;j<4-1;j++)
{
{
if (num[j<num[j+1]])
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
for(int m=0;m<5;m++)
{
printf("%d",num[m]);
}
}


不知道问题出在那了 结果不显示 就出现自己打上去了那几个数字 就没下文了

搜索更多相关主题的帖子: 算法 num void int 
2007-08-03 13:36
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
得分:0 
问题多多,给你改了自己看下

#include<stdio.h>
void main()
{
int num[5];
int temp;
printf("请输入5个数字: ");
for(int k=0;k<5;k++)
{
scanf("%d",&num[k]);
}
for(int i=0;i<4;i++)
{
for(int j=i+1;j<5;j++)
{

if (num[i]<num[j])
{
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
}
for(int m=0;m<5;m++)
{
printf("%d",num[m]);
}
}

天行健,君子以自强不息!!QQ:68660681
2007-08-03 14:04
gao_gao86
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-3-3
得分:0 
回复:(youniankang)[求助]排序算法出了点问题
if (num[j<num[j+1]])
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
这几句是什么意思? num[j<num[j+1]]得到的是什么啊?
2007-08-03 17:57
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
得分:0 

temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
这不是在交换值吗?

num[j<num[j+1]] 是把j和nmu[j+1]比较了

天行健,君子以自强不息!!QQ:68660681
2007-08-03 19:03
youniankang
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-7-18
得分:0 

晕 老是打错了符号````


2007-08-04 10:07
mahayu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:160
注 册:2007-8-3
得分:0 

#include <stdio.h>
void main()
{
int a[10]={1,34,3,123,12,56,2,41,9,10};
int j,i,tm;

for(j=9;j>0;j--) //逐步缩小循环次数
{
for(i=0;i<j;i++) //循环的关键部分
{
tm=a[i];
a[i]=a[j];
a[j]=tm;
}
}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}


给个参考,看一下,其实核心在前两个循环上.这是冒泡算法做的排序


研究Java和C#,,Jsp,Sql等各类编程技术, QQ:442013799  QQ群:47934757
2007-08-04 13:54
不在犯罪现场
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-8-1
得分:0 
以下是引用mahayu在2007-8-4 13:54:35的发言:

#include <stdio.h>
void main()
{
int a[10]={1,34,3,123,12,56,2,41,9,10};
int j,i,tm;

for(j=9;j>0;j--) //逐步缩小循环次数
{
for(i=0;i<j;i++) //循环的关键部分
{
tm=a[i];
a[i]=a[j];
a[j]=tm;
}
}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}


给个参考,看一下,其实核心在前两个循环上.这是冒泡算法做的排序

没看明白你这个是怎么排序的。。。


2007-08-05 00:54
不在犯罪现场
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-8-1
得分:0 
void main()
{
int a[5];
int temp;
printf("请输入5个数字: ");
for(int i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(int j=4;j>0;j--)
for(int k=0;k<j;k++)
{
if(a[k]>a[k+1])
{
temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
for(int m=0;m<5;m++)
{
printf("%d",a[m]);
}

}
不知道这样能不能排出来。。。

[此贴子已经被作者于2007-8-5 1:06:44编辑过]


2007-08-05 01:05
hmx7221159
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-10-30
得分:0 

就是把1,2,3,4,5这样的数排成5,4,3,2,1

2007-08-05 01:17
mahayu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:160
注 册:2007-8-3
得分:0 

更正一下原先代码中的错误
#include <stdio.h>
void main()
{
int a[10]={1,34,3,123,12,56,2,41,9,10};
int j,i,tm;

for(j=9;j>0;j--)
{
for(i=0;i<j;i++)
{
if(a[i]>a[j]) //if语句用来比较两数大小,当a[i]>a[j]时,为升序排列,反之a[i]<a[j]时为降序排列
{
tm=a[i];
a[i]=a[j];
a[j]=tm;
}
}
}

for(i=0;i<10;i++)
printf("%d\n",a[i]);
}

这是数组的冒泡排序法


研究Java和C#,,Jsp,Sql等各类编程技术, QQ:442013799  QQ群:47934757
2007-08-05 08:57



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




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

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