如果说起排序算法,几乎每个人都知道的就是冒泡排序了,因为它最简单,最容易理解。
但不同人写的冒泡差距可是很大的。
刚开始我写的:
void bubble_sort(int a[],int n)
{
int i,j,tmp = 0;
for(i=n-1;i>0;--i)
{
for(j=0;j<i;j++)
{
if(a[j]>a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
}
后来改了一些:
void bubble_sort(int a[],int n)
{
int i,j = 0;
for(i=n-1;i>0;--i)
{
for(j=0;j<i;j++)
{
if(a[j]>a[j+1])
{
a[j]^=a[j+1];
a[j+1]^=a[j];
a[j]^=a[j+1];
}
}
}
}
再后来又变成:
void bubble_sort(int a[],int n)
{
int i,j=0;
unsigned char change=0;
for(i=n-1,change=1;(i>0)&&change;--i)
{
change = 0;
for(j=0;j<i;j++)
{
if(a[j]>a[j+1])
{
a[j]^=a[j+1];
a[j+1]^=a[j];
a[j]^=a[j+1];
change =1;
}
}
}
}