排序算法复习—冒泡排序

冒泡排序基本思想:两两比较相邻数据,如果反序则交换数据,直到没有反序为止。

冒泡:较小的数(较大的数)如同气泡般慢慢浮到上面,因此命名冒泡排序,气泡排序。 还是代码看着直观,如下:

    int a[]={2,1,3,4,5};
    int n = sizeof(a)/sizeof(int);    
    int i,j,temp;
    bool exchange=true;

    for(i=0;i<n && exchange;i++)
    {
        exchange=false;
        for(j=n-2;j>=i;j--)//a[0]顶时,较小的气泡上浮。 
      //for(j=0;j<n-1-i;j++) a[0]底时,较大的气泡上浮。
        {
            if(a[j]>a[j+1])
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
                exchange=true;
            }
        }
    }

 补充说明:不一定要用双循环来完成算法,下面的代码更容易理解冒泡算法:

 1     int a[]={2,1,3,4,5};
 2     int length= sizeof(a)/sizeof(int);    
 3     int n=length;
 4     int i,j,temp;
 5         bool exchange=true;
 6 
 7     while(exchange)
 8     {
 9         exchange=false;
10         for(j=0;j<n-1;j++) 
11         {
12             if(a[j]>a[j+1])
13             {                
14                 swap(a[j],a[j+1]);
15                 exchange=true;
16             }
17         }
18         n--;
19     }
20     
21 
22     for(int k=0; k<length; k++)
23     {
24         cout<<a[k];
25     }

 

posted @ 2014-03-14 15:24  super-白  阅读(435)  评论(0编辑  收藏  举报