首頁  >  文章  >  後端開發  >  雞尾酒排序(雙重冒泡排序、攪拌排序或漣漪排序)

雞尾酒排序(雙重冒泡排序、攪拌排序或漣漪排序)

黄舟
黄舟原創
2017-02-09 16:22:072723瀏覽

 雞尾酒排序(雙冒泡排序、攪拌排序或漣漪排序)

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;namespace Sort  
{  
    class CockTailSorter  
    {  
        private static int[] myArray;  
        private static int arraySize;  
        public static int[] Sort(int[] myArray)  
        {  
            arraySize = myArray.Length;  
            CockTailSort(myArray);  
            return myArray;  
        }  
        public static void CockTailSort(int[] myArray)  
        {  
            int low, up, index, i;  
            low = 0;//数组起始索引  
            up = myArray.Length - 1;//数组索引最大值  
            index = low;//临时变量  
       //判断数组中是否有多个元素  
            while (up > low)//每一次进入while循环都会找出相应范围内最大最小的元素并分别放到相应的位置  
            {  
        //进入该for循环会将索引限定范围内最大的元素放到最右边  
                for (i = low; i < up; i++)//从上向下扫描  
                {  
                    if (myArray[i] > myArray[i + 1])  
                    {  
                        Swap(ref myArray[i], ref myArray[i + 1]);  
                        index = i;//记录当前索引  
                    }  
                }  
                up = index;//记录最后一个交换的位置  
        //进入该for循环会将索引限定范围内最小的元素放到最左边  
                for (i = up; i > low; i--)//从最后一个交换位置从下往上扫描  
                {  
                    if (myArray[i] < myArray[i - 1])  
                    {  
                        Swap(ref myArray[i], ref myArray[i - 1]);  
                        index = i;  
                    }  
                }  
                low = index;//记录最后一个交换的位置  
            }  
        }  
        private static void Swap(ref int left, ref int right)  
        {  
            int temp;  
            temp = left;  
            left = right;  
            right = temp;  
        }  
    }  
}

雞尾酒排序等於是冒泡排序的輕微變形。不同的地方在於從低到高然後從高到低,而冒泡排序則僅從低到高去比較序列裡的每個元素。他可以得到比冒泡排序稍微好一點的效能,原因是冒泡排序只從一個方向進行比對(由低到高),每次循環只移動一個項目。

使用雞尾酒排序,數組中的數字本來就是無規律的排放,先找到最小的數字,把他放到第一位,然後找到最大的數字放到最後一位。然後再找到第二小的數字放到第二位,再找出第二大的數字放到倒數第二位。以此類推,直到完成排序。


以上就是 雞尾酒排序(雙重冒泡排序、攪拌排序或漣漪排序)的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# 堆排序下一篇:C# 堆排序