复习复习复习。。。
虽然一般就写一种
//从头部开始和后面元素比较
void bubble1(int a[],int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=i+1;j<len;j++)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
//只需记住这一种,值得注意的是,细微的改变仍然可以运行,原因自己思考便知道
void bubble(int a[],int len)
{
for(int i=0;i<len;i++)
{
for(int j=i;j<len;j++)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
//第二种 从头部开始相邻元素比较
void bubble2(int a[],int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(a[j]<a[j+1])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
//第三种 从尾部开始相邻元素比较
void bubble3(int a[],int len)
{
for(int i=0;i<len;i++)
{
for(int j=len-1;j>i;j--)
{
if(a[j-1]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
#include<stdio.h>
//主函数验证
int main()
{
int i=0;
int len=9;
int a[]={1,5,9,8,7,6,4,3,2};
bubble1(a,9);
// bubble2(b);
// bubble3(c);
for(int j=0;j<len;j++)
{
printf("%d ",a[j]);
}
}