#include<stdio.h>
void BubbleSort(int a[],int n)
{
int i, j;
int flag=1;
int temp;
for(j = 1;j < n && flag==1 ; j++)
{
flag=0;
for(i = 1;i <= n - j; i++)
{
if(a[i]>a[i+1])
{
flag=1;
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
}
int main()
{
int a[5]={1,2,5,3,4};
BubbleSort(a[5],5);
}
编译后提示:
27 20 冒泡排序.cpp [Error] invalid conversion from 'int' to 'int*' [-fpermissive]
如果不用主函数,
#include<iostream>
using namespace std;
class A
{
void BubbleSort(int a[],int n)
{
int i,j,temp;
int flag=1;
for(i=1;i<n&&flag==1;i++)
{
flag=0;
for(j=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{
flag=1;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
};
则会提示 [Error] ld returned 1 exit status
请教一下该怎么办哇
BubbleSort(a[5],5);
这里传参的时候只用传数组名字,也就是地址
BubbleSort(a,5);
修改之后:
#include<stdio.h>
void BubbleSort(int a[],int n)
{
int i, j;
int flag=1;
int temp;
for(j = 1;j < n && flag==1 ; j++)
{
flag=0;
for(i = 1;i <= n - j; i++)
{
if(a[i]>a[i+1])
{
flag=1;
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
}
int main()
{
int a[5]={1,2,5,3,4};
BubbleSort(a,5);
for(int i=0;i<5;i++){
printf("%d ",a[i]);
}
}
传入的应该是数组,你写a[5]实际上是传入了一个int(而且访问越界了)
修改如下
有帮助望采纳~
...
int main()
{
int a[5]={1,2,5,3,4};
BubbleSort(a,5);
}
修改如下:
函数调用传递a即可
排序循环要从0开始,不是从1开始
#include<stdio.h>
void BubbleSort(int a[],int n)
{
int i, j;
int flag=1;
int temp;
for(j = 0;j < n-1 && flag==1 ; j++)
{
flag=0;
for(i = 0;i <= n - j-1; i++)
{
if(a[i]>a[i+1])
{
flag=1;
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
}
int main()
{
int a[5]={1,2,5,3,4};
BubbleSort(a,5);
return 0;
}
int main()
{
int a[5]={1,2,5,3,4};
BubbleSort(a,5);
}
要BubbleSort(a,5);
数组名是a,不是a[5]