冒泡排序算法(BubbleSort)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun_ashe/article/details/84844701

冒泡排序算法就是每一次把最小的数放到第一个位置,然后把剩下的数中的最小的位置放在第二个位置,依次类推,代码如下.
其中bubbleSort_v2最为v1的一个改进版本,可以解决本身已经顺序的情况下的,无需进行多次比较的问题,但是整体的算法时间复杂度并没有很好的提升。

template <class T>
        void bubbleSort_v1(T data[],int n)
{
            for(int i=0;i<n-1;i++)
            {
                for(int j = n-1;j>i;--j)
                {
                    if(data[j] < data[j-1])
                    {
                        swap(data[j],data[j-1]);
                    }
                }
            }
}

template<class T>
        void bubbleSort_v2(T data[],int n)
{
            bool again =true;
            for(int i=0;i<n-1 && again;i++)
            {
                for(int j =n-1,again = false;j>i;--j)
                {
                    if(data[j] < data[j-1])
                    {
                        swap(data[j],data[j-1]);
                        again = true;
                    }
                }
            }

}

int main()
{
    int num=10;
    int data[10] = {9,8,7,6,5,4,3,2,1,0};
    //char data[10] = {'a','b','c','d','h','l','c','d','e','k'};
    for(int i=0;i<num;i++)
    {
        cout << data[i] << ",";
    }
    cout << endl;

    //insertionSort(data,num);
    //selectionSort_v3(data,num);
    bubbleSort_v2(data,num);
    for(int i=0;i<num;i++)
    {
        cout << data[i] << ",";
    }
    cout << endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/sun_ashe/article/details/84844701