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

/*冒泡排序*/
void maoposort(int a[],int n)
{
int i,j,t;
for(i=0;i<n;i++)
{
for (j=0;j<=n-i;j++)
{
if(a[j]>a[j+1])
{ t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
}

}
void main()
{
int array[10]={1,2,54,21,8,78,65,47,0,4},i;
maoposort(array,10);
for(i=0;i<10;i++)
printf("%4d",array[i]) ;
getch();
}

搜索更多相关主题的帖子: void 
2007-11-03 14:43
米色zip
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-1
收藏
得分:0 

冒泡排序哦,有什么错误??
我电脑上调试没问题哦..

2007-11-03 16:00
jisg_57
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-11-3
收藏
得分:0 

不会吧,我又运行了一遍,错误还是在啊,数组中元素在排序后78根本没有出现,而多了个数组中没有的元素。望高手再仔细看看。

2007-11-03 18:38
yixiaowz
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-11-3
收藏
得分:0 

void maoposort(int a[],int n)
{
int i,j,t;
for(i=0;i<n;i++)
{
for (j=0;j<=n;j++)
{
if(a[i]>a[j])
{ t=a[i];a[i]=a[j];a[j]=t;}
}
}

}
void main()
{
int array[10]={1,2,54,21,8,78,65,47,0,4},i;
clrscr();
maoposort(array,10);
for(i=0;i<10;i++)
printf("%4d",array[i]) ;
getch();
}
修改了下,没问题了哦。


2007-11-03 20:11
颠峰对绝
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-10-13
收藏
得分:0 
肯定错误啊原因就是for循环越界了啊
改成这样
for( int i=0;i<n-2;i++)
{
for(int j=0;j<n-1-i;j++)
这样再运行就可以了是试一下啊

2007-11-03 20:52
qiuchengw
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-10-31
收藏
得分:0 
5楼的也不对啊,
应该是for( i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
2007-11-03 21:23
tianxia_buaa
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-19
收藏
得分:0 
我试了,是正确的......

2007-11-03 23:10
ping16002
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2007-11-2
收藏
得分:0 
好象那个j不是等于0的哦
2007-11-03 23:22
禾今
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-28
收藏
得分:0 

呵呵 简单的冒泡 引起如此争论 学术问题吗?这个也算吧。我也贴一个:
void BubbleSort(int a[],int n) /*a[] begins with a[0],n is the num */
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for (j=0;j<=n-i-2;j++)
{
if(a[j]>a[j+1]) /*from small to big*/
{ t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
}

}
void main()
{
int array[10]={1,2,54,21,8,78,65,47,0,4},i;
BubbleSort(array,10);
for(i=0;i<10;i++)
printf("%4d",array[i]) ;
getch();
}
请注意边界问题,以及i,j分别起的作用,然后就可以写出正确的程序了


因为幸福 所以继续编程
2007-11-04 02:16
nigma
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-2-24
收藏
得分:0 

改编到vs2005中的
using System;
using System.Collections.Generic;
using System.Text;

namespace 函数集
{
class Program
{
static void Main(string[] args)
{
int[] array=new int[10]{1,2,54,21,8,78,65,47,0,4};
BubbleSort(array,10);

}

static void BubbleSort(int[] a, int n) /*a[] begins with a[0],n is the num */
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for (j=0;j<=n-i-2;j++)
{
if(a[j]>a[j+1]) /*from small to big*/
{ t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
}
for (i = 0; i < n - 1; i++)
{
Console.Write("{0} ",a[i]);
}
}


}
}

2007-11-04 10:33
快速回复:冒泡排序!!运行总出错!
数据加载中...
 
   



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

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