排序算法--鸡尾酒排序

基本思想:

1.鸡尾酒排序等于是冒泡排序的轻微变形。不同的地方在于从低到高后然后从高到低,而冒泡排序则仅从低到高去比较序列里每一个元素。

算法复杂度:

最糟或平均多花费的次数是O(f(n2)),但是如果序列式已经排序号的是,会接近O(n)。

具体实现:

function cocktail_sort(list, list_length){ // the first element of list has index 0
    bottom = 0;
    top = list_length - 1;
    swapped = true; 
    while(swapped == true) // if no elements have been swapped, then the list is sorted
    {
        swapped = false; 
        for(i = bottom; i < top; i = i + 1)
        {
            if(list[i] > list[i + 1])  // test whether the two elements are in the correct order
            {
                swap(list[i], list[i + 1]); // let the two elements change places
                swapped = true;
            }
        }
        // decreases top the because the element with the largest value in the unsorted
        // part of the list is now on the position top 
        top = top - 1; 
        for(i = top; i > bottom; i = i - 1)
        {
            if(list[i] < list[i - 1]) 
            {
                swap(list[i], list[i - 1]);
                swapped = true;
            }
        }
        // increases bottom because the element with the smallest value in the unsorted 
        // part of the list is now on the position bottom 
        bottom = bottom + 1;  
    }
}
原文地址:https://www.cnblogs.com/fang-beny/p/3612247.html