| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 825 人关注过本帖
标题:排序问题
只看楼主 加入收藏
science
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-22
收藏
 问题点数:0 回复次数:16 
排序问题

这是一个由小到大的排序,但是有点问题
#include<iostream.h>
#include<iomanip.h>
#include<cstdlib>
main()
{
int i,j,k;
int a[10];
for(i=1;i<=10;i++)
a[i-1]=rand()%100; /产生随机数组
for(i=1;i<=10;i++)
cout<<a[i-1]<<setw(5); 输出数组
cout<<endl;
for(j=1;j<=10;j++)
{
int min=100; 取min 作为比较值
for(i=j;i<=10;i++)
{
if(min>a[i-1])
{
min=a[i-1]; 得到最小项和最小数值
k=i-1;
}
}
a[k]=a[j-1];
a[j-1]=min; 交换
}
for(j=1;j<=10;j++)
cout<<a[j]<<setw(5); 输出
cout<<endl;
return 0;
}

但是输出有问题,情况如下:
41 67 34 0 69 24 78 58 62 64
24 34 41 58 62 64 67 69 78 9
Press any key to continue
不知道什么原因??

搜索更多相关主题的帖子: include 
2007-01-15 23:17
soc01
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-9-6
收藏
得分:0 
for(j=1;j<=10;j++)
cout<<a[j]<<setw(5); 输出
cout<<endl;
应该是a[j-1];

2007-01-16 12:25
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
冒泡法:
for (int i = 0; i<9; i++)
{
for (int j = i+1; j<10; j++)
{
if(a[i]>a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}

[此贴子已经被作者于2007-1-16 13:03:58编辑过]


2007-01-16 13:03
虫虫飞ya飞
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2005-11-28
收藏
得分:0 

#include<iostream.h>
#include<iomanip.h>
#include<cstdlib>
main()
{
int i,j;
int a[10];
for(i=0;i<=9;i++)
a[i]=rand()%100;
for(i=0;i<=9;i++)
cout<<a[i]<<setw(5);
cout<<endl;
int temp;
for(i=0;i<9;i++)
{

for(j=i+1;j<=9;j++)
{

if(a[j]<a[i])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}

}

for(i=0;i<=9;i++)
cout<<a[i]<<setw(5);
cout<<endl;

}
用i=1做下标会出错的


2007-01-16 18:04
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
最好带个标志位
判断是否以排好

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-16 19:38
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
以下是引用song4在2007-1-16 19:38:42的发言:
最好带个标志位
判断是否以排好

带个标志位,用哪种排序法?指点一二


2007-01-17 08:27
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用虫虫飞ya飞在2007-1-16 18:04:08的发言:

#include<iostream.h>
#include<iomanip.h>
#include<cstdlib>
main()
{
int i,j;
int a[10];
for(i=0;i<=9;i++)
a[i]=rand()%100;
for(i=0;i<=9;i++)
cout<<a[i]<<setw(5);
cout<<endl;
int temp;
bool UnSort;
for(i=0;i<9&&!UnSort;i++)
{
UnSort=ture;
for(j=i+1;j<=9;j++)
{

if(a[j]<a[i])
{
UnSort=false;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}

}

for(i=0;i<=9;i++)
cout<<a[i]<<setw(5);
cout<<endl;

}
用i=1做下标会出错的


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-17 11:53
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
以下是引用song4在2007-1-17 11:53:48的发言:

如果数组是这样的怎么办:

0,9,8,7,6,5,4,3,2,1


2007-01-17 12:37
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
任何经典算法对最差的情况都是最差的效率

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-17 12:53
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
晕倒!我是说你7楼的程序是错的!

如果数组是这样的:
0,9,8,7,6,5,4,3,2,1
你的程序执行结果是:
0,9,8,7,6,5,4,3,2,1
而正确结果是:
0,1,2,3,4,5,6,7,8,9

2007-01-17 16:51
快速回复:排序问题
数据加载中...
 
   



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

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