Sam大叔
"if you ever want something badly,let it go.if it comes back to you,then it's yours forever.if it doesn't,then it was never yours to begin with."

导航

 

冒泡排序算法的运作如下:

   1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

   2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

   3. 针对所有的元素重复以上的步骤,除了最后一个。  

   4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


//

 //  bubbl.cpp

 //

 //  Created by scandy_yuan on 12-12-27.

 //  Copyright (c) 2012 Sam. All rights reserved.

 //

 

 #include <iostream>

 using namespace std;

 

 //交换函数

 void s_swap(int * a,int * b){

     int c = *a;

     *a = *b;

     *b = c;

 }

 

 //冒泡算法实现函数

 void bubble(int data[],size_t size)

 {

     //size个数只需要比较size-1次即可

     for(size_t i = 0;i<size-1;i++)

     {

         //size-1-i 是对冒泡的优化,减少比较次数

         for(size_t j=0;j<size-1-i;j++)

         {

             if(data[j] > data[j+1])

                 s_swap(&data[j], &data[j+1]);

         }

         cout << "" << i+1 << "次排序之后的顺序是:"  << " ";

         for (size_t k=0 ; k<size; k++) {

             cout << data[k] << " ";

         }

         cout << endl;

     }

 }

 

 int main(int argc, const char * argv[])

 {

 

     // insert code here...

     //测试

     int arr[5] = {2,1,5,4,3};

     bubble(arr, 5);

     return 0;

 }

 


附带规则的冒泡排序算法

//

//  bubbl.cpp

//

//  Created by scandy_yuan on 12-12-27.

//  Copyright (c) 2012 Sam. All rights reserved.

//

 

#include <iostream>

usingnamespacestd;

 

//交换函数

void s_swap(int * a,int * b){

    int c = *a;

    *a = *b;

    *b = c;

}

//升序

void compare_ascending(int& a,int& b){

    if(a>b) s_swap(&a,&b);

}

//降序

void compare_descending(int& a,int& b){

    if(a<b) s_swap(&a,&b);

}

 

//附带规则的冒泡算法实现函数

void bubble(int data[],size_t size,void (*compare)(int&,int&))

{

    //size个数只需要比较size-1次即可

    for(size_t i = 0;i<size-1;i++)

    {

        //size-1-i 是对冒泡的优化,减少比较次数

        for(size_t j=0;j<size-1-i;j++)

        {

            compare(data[j],data[j+1]);

        }

        cout << "" << i+1 << "次排序之后的顺序是:"  << " ";

        for (size_t k=0 ; k<size; k++) {

            cout << data[k] << " ";

        }

        cout << endl;

    }

}

 

int main(int argc, const char * argv[])

{

 

    // insert code here...

    //测试

    int arr[5] = {2,1,5,4,3};

    bubble(arr, 5,compare_descending);

    return 0;

}

 

 

posted on 2012-12-28 11:17  Sam大叔  阅读(393)  评论(0)    收藏  举报