Alogrithm here is:
void bubble(int *a,int n)
{
int count=0;
int num=0;
int temp;
int i,j;
while(num<n-1)
{
for(i=0;i<n-1;i++)
{
j=i+1;
if(*(a+i)>*(a+j))
{
temp=*(a+i);
*(a+i)=*(a+j);
*(a+j)=temp;
count++;
}
}
if(count==0)
break ;
count=0;
num++;
}
fprintf(stderr,"%d/n",num);
}
该算法已经被优化了,迭代次少于n*(n-1)/2,设置一个标志,当没有交换时就退出了.
Test a[8]={35,19,63,11,73,49,40,73},only scan three times.
void bubble(int *a,int n)
{
int count=0;
int num=0;
int temp;
int i,j;
while(num<n-1)
{
for(i=0;i<n-1;i++)
{
j=i+1;
if(*(a+i)>*(a+j))
{
temp=*(a+i);
*(a+i)=*(a+j);
*(a+j)=temp;
count++;
}
}
if(count==0)
break ;
count=0;
num++;
}
fprintf(stderr,"%d/n",num);
}
该算法已经被优化了,迭代次少于n*(n-1)/2,设置一个标志,当没有交换时就退出了.
Test a[8]={35,19,63,11,73,49,40,73},only scan three times.