■ 칵테일 정렬하는 방법을 보여준다.
▶ 칵테일 정렬하기 예제 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System; int[] array = new int[] { 10, 50, 30, 20, 90, 80, 15, 20 }; CocktailSort1<int>(array); for(int i = 0; i < array.Length; i++) { Console.Write(array[i]); Console.Write(" "); } |
▶ 칵테일 정렬하기 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
using System; #region 칵테일 정렬하기 1 - CocktailSort1<T>(itemArray) /// <summary> /// 칵테일 정렬하기 1 /// </summary> /// <typeparam name="T">항목 타입</typeparam> /// <param name="itemArray">항목 배열</param> public void CocktailSort1<T>(T[] itemArray) where T : IComparable { bool swapped; do { swapped = false; for(int i = 0; i < itemArray.Length - 1; i++) { if(itemArray[i].CompareTo(itemArray[i + 1]) > 0) { T temporaryItem = itemArray[i]; itemArray[i ] = itemArray[i + 1]; itemArray[i + 1] = temporaryItem; swapped = true; } } if(!swapped) { break; } swapped = false; for(int i = 0; i < itemArray.Length - 1; i++) { if(itemArray[i].CompareTo(itemArray[i + 1]) > 0) { T temporaryItem = itemArray[i]; itemArray[i ] = itemArray[i + 1]; itemArray[i + 1] = temporaryItem; swapped = true; } } } while(swapped); } #endregion #region 칵테일 정렬하기 2 - CocktailSort2<T>(itemArray) /// <summary> /// 칵테일 정렬하기 2 /// </summary> /// <typeparam name="T">항목 타입</typeparam> /// <param name="itemArray">항목 배열</param> public void CocktailSort2<T>(T[] itemArray) where T : IComparable { bool swapped; int start = (-1); int end = itemArray.Length - 1; do { swapped = false; start++; for(int i = start; i < end; i++) { if(itemArray[i].CompareTo(itemArray[i + 1]) > 0) { T temporaryItem = itemArray[i]; itemArray[i ] = itemArray[i + 1]; itemArray[i + 1] = temporaryItem; swapped = true; } } if(!swapped) { break; } swapped = false; end--; for(int i = end; i >= start; i--) { if(itemArray[i].CompareTo(itemArray[i + 1]) > 0) { T temporaryItem = itemArray[i]; itemArray[i ] = itemArray[i + 1]; itemArray[i + 1] = temporaryItem; swapped = true; } } } while(swapped); } #endregion |