直接写代码,
void BulleSort(int a[] ,int n)
{
int i,j;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
SWAP(&a[j],&a[j+1]);
}
}
}
void SWAP(int *a,int *b)
{
int temp ;
temp = *a;
*a=*b;
*b=temp;
}
改进下 ,加一个 排序标记。
#include<iostream>
using namespace std;
void BubbleSort(int a[],int n)
{
int i=1,
tag=0,//数据转换标记
j;
do
{
for(j=n-1;j>=i;j--)
if(a[j]<a[j-1])
{
swap(a[j],a[j-1]);
tag=1;
}
i++;
}while(i<=n && tag==1);
}
void swap(int &a ,int &b)
{
int temp;
temp = a;
a=b;
b=temp;
}
int main()
{
int a[]={1,2,4,5,6,7,8,9};
int len = sizeof(a)/sizeof(int);
BubbleSort(a,len);
for(int i =0;i<len;i++)
{
cout<<a[i]<<endl;
}
return 0;
}
也就是说 ,当原数组已经有序时 ,只进行一次排序。 或者当进行一次或几次排序后数组已经有序了,那么后面就不用比较排序了。。