티스토리 뷰
유니티에서 사용할 머지 정렬을 만들었는데
확실히 c#용은 아닌 녀석임...
스테이블 정렬을 하기 위해서 일단은 쓰겠지만 앞으로 문제가 생길지도!
후우... 일단은 기록을 위해 포스팅합니다.
개선점 적어주시면 너무 감사감사..
Vector2Int를 쓴 이유는
int값 두개를 가지고 x를 기존 인덱스를 1,2,3,4... 쭉 넣어주고
y값에 비교할 밸류를 넣는 방식으로 하는데 Vector2int라고 하는 편리한 녀석을 안 쓸 이유가 없어서 활용해봤다.
public static void Merge(Vector2Int[] arr, int left, int right, E_SortType sortType)
{
// 임시 메모리 만들기
Vector2Int[] arr2 = (Vector2Int[])arr.Clone();
// 필요한 변수 선언
int mid = (left + right) / 2; //
int low = left;
int high = mid + 1;
int key = left;
while (low <= mid && high <= right)
{
if ((sortType == E_SortType.ascending && arr[low].y <= arr[high].y) || (sortType == E_SortType.descending && arr[low].y >= arr[high].y))
{
arr2[key++] = arr[low++];
}
else
{
arr2[key++] = arr[high++];
}
}
int tmp = low > mid ? high : low;
while (key <= right)
{
arr2[key++] = arr[tmp++];
}
for (int i = left; i <= right; i++)
{
arr[i] = arr2[i];
}
}
public static void Sort(Vector2Int[] arr, int left, int right, E_SortType sortType)
{
int mid;
if (left < right)
{
mid = (left + right) / 2;
Sort(arr, left, mid,sortType);
Sort(arr, mid + 1, right, sortType);
Merge(arr, left, right, sortType);
}
}
'개발일기 > 유니티3D' 카테고리의 다른 글
두 지점의 포물선 중간점 만들기 기록 (0) | 2021.06.30 |
---|---|
랜덤으로 아이템 뽑을 때, 간단하게 만들기 (0) | 2021.04.08 |
유니티 multidex 설정이 안되길래 확인해보니... (0) | 2020.09.14 |
유니티에서 해당 안드로이드 단말기의 국가정보를 알고 싶을 때.. (0) | 2019.06.20 |
LayerMask 와 비트연산... (0) | 2019.06.03 |
댓글