

//冒泡排序
#include<stdio.h>
#define N 10
void printAaary(int *a,int n)//打印数组
{
int i=0;
for(i=0;i<n;i++)
printf("%5d",a[i]);
}
void sort(int a[],int n)//冒泡排序
{
int i,j,t;
for(i=0;i<n-1;i++)//共需要n-1趟
for(j=0;j<n-1-i;j++)//每一趟需要n-i次两两比较
{
if(a[j]<a[j+1]){ //比大到小
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
}
int main()
{
int a[N]={33,22,99,88,77,66,11,44,55,100};
printf("排序前:\n");
printAaary(a,N);
sort(a,N);
printf("\n排序后:\n");
printAaary(a,N);
}

//基本冒泡排序的优化
#include<stdio.h>
#define N 10
void printAaary(int *a,int n)//打印数组
{
int i=0;
for(i=0;i<n;i++)
printf("%5d",a[i]);
}
void sort(int a[],int n)//冒泡排序
{
int i,j,t;
int flag=0;
i=0;
while(i<n-1&&(!flag))
{
flag=1;
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1]){
flag=0;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
i++;
}
}
int main()
{
int a[N]={100,99,88,77,66,55,44,33,22,11};
printf("排序前:\n");
printAaary(a,N);
sort(a,N);
printf("\n排序后:\n");
printAaary(a,N);
}