关于冒泡排序

kingofud2007 2008-03-20 08:45:58
#include <stdio.h>
main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i <10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j <9;j++)
for(i=0;i <9-j;i++)
if(a[i]> a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("\n");
for(i=0;i <10;i++)
printf("%d\n",a[i]);
printf("\n");
}
我是这样写的,但是我输入的数相等时 ,排序就会出错,如何修改
...全文
433 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘牧之train 2012-09-03
  • 打赏
  • 举报
回复
没错啊、
zhfrush200 2012-09-03
  • 打赏
  • 举报
回复
for(i=0; i<9; i++)
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
可行不?????
孤雨 2012-08-25
  • 打赏
  • 举报
回复
应该确实没什么错误
孤雨 2012-08-25
  • 打赏
  • 举报
回复
应该确实没什么错误
tragedyhomeland 2012-08-24
  • 打赏
  • 举报
回复
好吧,我错了,其实是一样的!
tragedyhomeland 2012-08-24
  • 打赏
  • 举报
回复
好吧,我错了,其实是一样的!
SKATE11 2012-08-24
  • 打赏
  • 举报
回复
确实没错 代码没错 运行也没错
SKATE11 2012-08-24
  • 打赏
  • 举报
回复
确实没错 代码没错 运行也没错
SKATE11 2012-08-24
  • 打赏
  • 举报
回复
确实没错 代码没错 运行也没错
tragedyhomeland 2012-08-24
  • 打赏
  • 举报
回复
我知道为什么楼主说有错!因为scanf("%d",&a[i]);接收楼主的输入是会把回车字符接收进来,所以导致输入的数组错误。

解决的方法可以来上\n转义字符:scanf("%d\n",&a[i]);
tragedyhomeland 2012-08-24
  • 打赏
  • 举报
回复
我知道为什么楼主说有错!因为scanf("%d",&a[i]);接收楼主的输入是会把回车字符接收进来,所以导致输入的数组错误。

解决的方法可以来上\n转义字符:scanf("%d\n",&a[i]);
huangdancs 2012-08-24
  • 打赏
  • 举报
回复
没有什么问题,LZ换个便一起看看
海底深鱼 2012-08-24
  • 打赏
  • 举报
回复
你的程序没错,相等时也没错,你再试试。
xujun19890805 2012-08-21
  • 打赏
  • 举报
回复
唯一的是只循环了9次吧 其他貌似没错
Jackie_Zhu 2012-07-01
  • 打赏
  • 举报
回复
i=9的时候不是数组越界了???
wizard_tiger 2012-05-13
  • 打赏
  • 举报
回复
LZ不是开玩笑的吧?
程序没有错误呀!
wcyun_11 2012-05-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

//起泡法排序:
#include<iostream>
using namespace std;
#define N 5 //N为数的总个数

void BubbleSort(int r[],int n);

int main()
{
int i;
int a[N];
cout<<"请输入"<<N<<"个数字:";
for(i=……
[/Quote]加不加都一样啦。。。。。
W170532934 2012-05-10
  • 打赏
  • 举报
回复
楼主和大家开了个玩笑。其实程序没错误。
love8023_zdh 2012-05-10
  • 打赏
  • 举报
回复
用VC++6.0编译试试吧!
花溪 2012-05-07
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i <10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j <9;j++)
for(i=0;i <9-j;i++)
if(a[i]>= a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("\n");
for(i=0;i <10;i++)
printf("%d\n",a[i]);
printf("\n");
}
在判断处加个等号,就可以了
加载更多回复(14)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧