//冒泡排序算法(改进)
#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后面的都是排序排好了的。*/
   }
  }
 }
}