【小白求助】起泡法排序 自定义函数部分运行出错
[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