作者在 2011-03-24 12:54:12 发布以下内容
想必大家都学过冒泡排序,假如给一个数组A,他有N个元素,
如果要求对他从小到大排列,则冒泡排序的函数可以这样写:
void sort1(int *A,int N)
{
int i,j,tmp;
for(i=0;i<N-1;i++)
for(j=0;j+1<N-i;j++)
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
{
int i,j,tmp;
for(i=0;i<N-1;i++)
for(j=0;j+1<N-i;j++)
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
其实冒泡排序还有一种形式,在这里与大家分享一下。
void sort2(int *A,int N)
{
int i,j,tmp;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]>a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
{
int i,j,tmp;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]>a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
细心的路人会发现,其实方法一和方法二是相逆的,这里就不多做解释啦。