언제쯤 RB 트리 구현해보려나..-_- 책 진도가 안나간다.
code : https://github.com/EomTaeWook/Algorithm/blob/master/Algorithm/Sort/QuickSort.cs
namespace API.Util.Sort
{
class QuickSort
{
public static List<T> Sort<T>(List<T> unsortList) where T : IComparable
{
Sort(ref unsortList, 0, unsortList.Count - 1);
return unsortList;
}
private static void Swap<T>(ref List<T> unsortList, int indexA, int indexB)
{
var temp = unsortList[indexA];
unsortList[indexA] = unsortList[indexB];
unsortList[indexB] = temp;
}
private static List<T> Sort<T>(ref List<T> unsortList, int left, int right) where T : IComparable
{
var pivot = unsortList[(left + right) / 2];
int l = left, r = right;
while (l <= r)
{
while (unsortList[l].CompareTo(pivot) < 0)
{
l++;
}
while (unsortList[r].CompareTo(pivot) > 0)
{
r--;
}
if (l <= r)
{
Swap(ref unsortList, l, r);
l++;
r--;
}
}
if (left < r)
Sort(ref unsortList, left, r);
if (l < right)
Sort(ref unsortList, l, right);
return unsortList;
}
}
}
'알고리즘 > 기타' 카테고리의 다른 글
기수 정렬(RadixSort) 구현 (0) | 2018.03.22 |
---|---|
계수 정렬(CountingSort) 구현 (0) | 2018.03.20 |
heap 정렬 및 PriorityQueue (0) | 2018.02.10 |
후위 표기법 (0) | 2018.01.04 |
자연수 N의 합 경우의 수 (0) | 2017.12.24 |