常用排序算法——雞尾酒排序(改進的冒泡排序)

#include <iostream>
using namespace std;

template<class T>
void cocktail_sort(T *arr, int len)
{
    T tmp;
    int tail = len - 1;
    for(int i = 0; i < tail; )
    {
        //小的排到前面
        for(int j = tail; j > i; -- j)
        {
            if(arr[j] < arr[j - 1])
            {
                tmp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = tmp;
            }
        }
        ++ i;
        //大的排到後面
        for(int j = i; j < tail; ++ j)
        {
            if(arr[j] > arr[j + 1])
            {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
        tail --;
    }
}

int main()
{
    int size;
    cin >> size;
    int *arr = new int[size];
    for(int i = 0; i < size; ++ i)
        cin >> *(arr+i);
    cocktail_sort(arr, size);
    for(int i = 0; i < size; ++ i)
        cout << *(arr + i) << " ";
    cout << endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章