首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【小白】起泡法排序 自定义函数部分运行出错

2012-04-19 
【小白求助】起泡法排序 自定义函数部分运行出错[codeC/C++][/code]#includestdio.hmain(){int count,ip

【小白求助】起泡法排序 自定义函数部分运行出错
[code=C/C++][/code]

#include<stdio.h>
main()
{ int count,i;
  printf("输入数字的数量: ");
  scanf("%d",&count);
  int number[count-1];
  for(i=0;i<=count-1;i++)
  {
  printf("输入第%d个数:",i+1);
  scanf("%d",&number[i]);
  }
  for(i=0;i<count;i++)
  printf("%d",number[i]);
  printf("正在排序...");
  BubbleSort(count-1,number[count-1]);
return 0;
}
 void BubbleSort(int n,int a[])
 {int i,j,tmp;
  for(i=0;i<=n;i++)
  {
  for(j=1;j<=n-i;j++)
  { 
  if(a[j]>a[j+1])
  {
  tmp=a[j];
  a[j]=a[j+1];
  a[j+1]=tmp;
  }
  }
  for(i=0;i<=n;i++)
  printf("%d",a[i]);
  }

 }

气泡法函数最内层if语句有问题可是自己怎么没找到问题在哪


[解决办法]
还有一点,子程序的循环,你写的也有点问题吧,我改了,在上面
[解决办法]
#include<stdio.h>
main()
{
int i,count;
/*去掉这两行句:printf("输入数字的数量:\n");
scanf("%d",&count);*/
int number[10];//数组定义中下标不能是变量(count-1)
printf("输入10个数:\n");
for(i=0;i<=9;i++)
{
printf("输入第%d个数:",i+1);
scanf("%d",&number[i]);//数组元素下标可以用变量
}
for(i=0;i<10;i++)
printf("%3d",number[i]);
printf("正在排序...\n");
void BubbleSort(int,int []);
BubbleSort(9,number);/*函数在调用前未声明是不合法的,还有nunber[10]是数组的十号元素,
并不是整个数组,要传递整个数组只需传递数组名即可*/
return 0;
}
void BubbleSort(int n,int a[])
{
int i,j,tmp;
for(i=0;i<=n;i++)
{
for(j=0;j<=n-i;j++)
{
if(a[j]>a[j+1]&&9>=j+1)//9>=j+1是为了防止j=9时j+1=10,没有a[10]这个元素
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
for(i=0;i<=n;i++)//你的程序里的这个for语句应该放在倒数第二个括号外
printf("%3d",a[i]);
printf("//n");
}

还有2楼的大哥是选择法排序,不是冒泡法排序。呵呵 我也是新手,暂时就看到这么多问题
[解决办法]
选择排序,子程序应该是

void BubbleSort(int n, int a[])
{
int i, j, tmp, pos;
for(i = 0; i < n - 1; i++)
{
pos = i;
for(j = i + 1; j < n; j++)
{
if(a[pos] > a[j])
{
pos = j;
}
}
tmp = a[pos];
a[pos] = a[i];
a[i] = tmp;
}
for(i = 0; i < n; i++)
printf("%d\n", a[i]);
}


3楼的就是冒泡排序.。。。


[解决办法]
看我总结的排序吧,全部在VC++6.0调试过
http://www.cnblogs.com/chenyuming507950417/archive/2011/12/31/2297990.html

热点排行