■ 조합 정렬하는 방법을 보여준다.
▶ 조합 정렬하기 예제 (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 }; CombinationSort<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 |
using System; #region 조합 정렬하기 - CombinationSort<T>(itemArray) /// <summary> /// 조합 정렬하기 /// </summary> /// <typeparam name="T">항목 타입</typeparam> /// <param name="itemArray">항목 배열</param> public void CombinationSort<T>(T[] itemArray) where T : IComparable { int gap = itemArray.Length; bool swapped = true; while(gap > 1 || swapped) { if(gap > 1) { gap = (int)(gap / 1.3d); } int i = 0; swapped = false; while(i + gap < itemArray.Length) { if(itemArray[i].CompareTo(itemArray[i + gap]) > 0) { T temporaryItem = itemArray[i]; itemArray[i ] = itemArray[i + gap]; itemArray[i + gap] = temporaryItem; swapped = true; } i++; } } } #endregion |