//冒泡排序算法(改进)
#include<iostream.h>
void bubble_sort(int a[], int n);
void main()
{
int a[]={1,58,65,47,21,35,85,47,95,78,102,3,5};
int len=sizeof(a)/sizeof(int);
for(int i=0; i<len; i++)
cout<<a[i]<<",";
cout<<endl;
bubble_sort(a, len);
for(i=0; i<len; i++)
cout<<a[i]<<",";
cout<<endl;
}
void bubble_sort(int a[], int n)
{
int j, k, h, t;
for (h=n-1; h>0; h=k) /*循环到没有比较范围*/
{
for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
{
if (a[j] > a[j+1]) /*大的放在后面,小的放到前面*/
{
t = a[j];
a[j] = a[j+1];;
a[j+1] = t; /*完成交换*/
k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
}
}
}
}