冒泡排序

来源:互联网 发布:商场收租软件 编辑:程序博客网 时间:2024/06/01 08:23

冒泡排序是在数据结构与算法中最为简单的一个排序方法,属于交换排序的范畴,当然也是原地排序。其机理是逐次比较,把最大的值冒出来,放在数组最后一个位置。同理,从头开始,将次大值冒出来放在数组倒数第二个位置,直到排序完成。显然两层循环嵌套,其最坏的情况是O(n-1)+O(n-2)+...+O(1),结果为O(n * n),在排序算法中属于效率较低的一类。

template<typename T>void Bubble_Sort(T A[],const size_t& size){    for(int i = 0; i != size; i ++)    {        for(int j = size - 2; j >= 0; j --)        {            if(A[j] >= A[j + 1])            {                T tmp = A[j];                A[j] = A[j + 1];                A[j + 1] = tmp;            }        }#ifdef DEBUG        print(A,size);#endif    }}template<typename T>void print(T A[],const size_t& size){    static int times = 0;    times ++;    cout << "the:" << times << "times" << endl;    for(int i = 0; i != size; i ++)    {        cout << A[i] << '\t';    }    cout << endl;}


结果已通过测试用例,请大家批评指正。