这个该进的冒泡排序什么地方错了?
#include<stdio.h>void BubbleSort(float a[],int n,int *p);
int main(void)
{
float a[10]={20,12,14,10,8,6,5,3,2,1};/*{3,3.1,5,4,10,25.1,2.9,4,7,3.3}*/
int n,b;
BubbleSort(a,10,&b);
for(n=0;n<10;n++)
printf(" %f",a[n]);
printf("\n");
printf("b=%d\n",b);
system("pause");
return(0);
}
void BubbleSort(float a[],int n,int *p)
{
int i,j,k;
float temp;
for(j=0;j<10-1;j++)
{
for(k=0,i=0;i<10-j-1;i++)
{
if(a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
k=1;
}
}
if(k=0)
{
*p=j;
break;
}
}
}
我想要减少比较的次数,就是排序进行到某一步,已经能够排好顺序了,想要退出,并且记录第几次排好顺序的。