#include"stdio.h"
//冒泡排序
void bubbleSort(int a[],int len)
{
int temp;
int count=0;
int inner=0,outer=0;
if(NULL==a||0==len)
return;
for(outer=len-1;outer>=1;outer--)
{
for(inner=0;inner<outer;inner++)
{
if(a[inner]>a[inner+1])
{
temp=a[inner];
a[inner]=a[inner+1];
a[inner+1]=temp;
}
}
count++;
printf("数据交换次数%d\n",count);
}
}
//改进后的冒泡排序
void bubbleSort2(int a[],int len)
{
int temp;
int count=0;
int inner=0,outer=0;
int flag;
if(NULL==a||0==len)
return;
for(outer=len-1;outer>=1&&flag;outer--)
{
flag=0;
for(inner=0;inner<outer;inner++)
{
if(a[inner]>a[inner+1])
{
temp=a[inner];
a[inner]=a[inner+1];
a[inner+1]=temp;
//如果扫一遍没有交换,说明已经排好序
if(flag==0)
flag=1;
}
}
count++;
printf("数据交换次数%d\n",count);
}
}
void main()
{
int arr[]={1,5,99,3,6,4,7,88,11,22,8,77};
int arr2[]={1,2,4,6,7,88};
int i;
//冒泡排序
printf("冒泡排序后的数组值\n");
bubbleSort(arr,sizeof(arr)/sizeof(int));
for(i=0;i<sizeof(arr)/sizeof(int);i++)
{
printf("%d \n",arr[i]);
}
//改进后的冒泡排序
printf("改进冒泡排序后的数组值\n");
bubbleSort2(arr,sizeof(arr)/sizeof(int));
for(i=0;i<sizeof(arr)/sizeof(int);i++)
{
printf("%d \n",arr[i]);
}
getch();
}