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; } } }
鸡尾酒排序等于是冒泡排序的细微变形。差别的处所在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每一个元素。他能够获得比冒泡排序轻微好一点的效能,原因是冒泡排序只从一个方向举行比对(由低到高),每次轮回只挪动一个项目。
运用鸡尾酒排序,数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一名,然后找到最大的数字放到末了一名。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。
以上就是 鸡尾酒排序(双冒泡排序、搅拌排序或荡漾排序)的内容,更多相关内容请关注ki4网(www.ki4.cn)!