칵테일 정렬(이중 버블 정렬, 교반 정렬 또는 리플 정렬)
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) !