改好了:
#include "stdio.h"
#include "stdlib.h"
void PrintArray(int a[],int n) //输出排序每一步的结果
{
int i;
for(i=0;i
printf("\n");
}
void BubbleSort(int a[],int n) //冒泡排序函数
{
int i,j,tmp; //tmp为中间变量
int flag; //标志变量,如果为0,说明不再交换顺序,排序结束
int count=0; //记录交换次数
printf("initial sorting:");
PrintArray(a,n); //输出排序前的序列
for(i=0;i
flag=0; //初始值为0
for(j=i+1;j
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
flag=1; //如果发生交换,标识变量设为1
}
}
count++; //记录已经发生的排序次数
printf("after %d sorting:",count);
PrintArray(a,n); //输出第count次的排序结果
if(flag==0) //没进行一次排序,flag都清0,若交换再发生,则排序完成
{
return;
}
}
}
void main() //主函数
{
int *a,n=5,i=0;
a=(int *)malloc(n*sizeof(int)); //为5个待排序的整型数开辟储存空间
for(i=0;i
BubbleSort(a,n); //调用排序函数进行排序
free(a); //排序结束,释放储存空间
}
改好了:
#include
"stdio.h"
#include
"stdlib.h"
void
PrintArray(int
a[],int
n)
//输出排序每一步的结果
{
int
i;
for(i=0;i
printf("%4d",a[i]);
printf("\n");
}
void
BubbleSort(int
a[],int
n)
//冒泡排序函数
{
int
i,j,tmp;
//tmp为中间变量
int
flag;
//标志变量,如果为0,说明不再交换顺序,排序结束
int
count=0;
//记录交换次数
printf("initial
sorting:");
PrintArray(a,n);
//输出排序前的序列
for(i=0;i
flag=0;
//初始值为0
for(j=i+1;j
//如果前面的数比后面的数大,进行交换
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
flag=1;
//如果发生交换,标识变量设为1
}
}
count++;
//记录已经发生的排序次数
printf("after
%d
sorting:",count);
PrintArray(a,n);
//输出第count次的排序结果
if(flag==0)
//没进行一次排序,flag都清0,若交换再发生,则排序完成
{
return;
}
}
}
void
main()
//主函数
{
int
*a,n=5,i=0;
a=(int
*)malloc(n*sizeof(int));
//为5个待排序的整型数开辟储存空间
for(i=0;i
//输入待排序数
BubbleSort(a,n);
//调用排序函数进行排序
free(a);
//排序结束,释放储存空间
}
你把错误的情况说明白点
是抄的吗?自己运行一下就看见了
第20行
for(i=0;j