그냥 게임개발자

TArray - HeapSort 본문

Unreal스터디/TArray

TArray - HeapSort

sudoju 2024. 1. 2. 22:35

소팅

  • 배열은 Sort 함수를 호출하는 것으로 간단히 소팅 가능
StrArr.Sort();
// StrArr == ["!", "Brave", "Hello", "of", "Tomorrow", "World"];
  • 여기서 엘리먼트 유형 연산자< 를 사용해서 값을 소팅합니다.
  • FString의 경우 대소문자 구분 없이 사전식 비교를 한다.
StrArr.Sort([](const FString& A, const FString& B) 
{
   // 길이 별로 소팅
   return A.Len() < B.Len();
});
// StrArr == ["!", "of", "Hello", "Brave", "World", "Tomorrow"];
  • 참고로 길이가 같은 "Hello", "Brave", "World" 스트링 셋의 상대 순서가 기존에 비해 바뀐 것을 볼수가 있다.

  • 왜냐하면 Sort는 동등한(, 즉 길이가 같은) 엘리먼트의 상대 순서를 동일하게 보장하지 않는 비안정적인 것이기 때문
  • Sort는 일종의 간단 소팅 기능으로 구현된 것

 

HeapSort

  • 이진 술부가 있든 없든, 힙 소팅에 사용 가능.
  • 이겅싀 사용 여부는 데이터의 종류와 Sort함수에 비할 때 Sorting의 효율성에 따라 달라짐.
  • Sort처럼 HeapSort도 안정적이지 못함
  • 위에서 Sort 대신 HeapSort를 사용한 결과는 이렇다.
StrArr.HeapSort([](const FString& A, const FString& B)
{
   return A.Len() < B.Len();
});
// StrArr == ["!", "of", "Hello, "Brave", "World", "Tomorrow"]

'Unreal스터디 > TArray' 카테고리의 다른 글

TArray - Num  (0) 2024.01.02
TArray - StableSort  (0) 2024.01.02
TArray - 반복 처리  (0) 2024.01.02
TArray - SetNum  (0) 2024.01.02
TArray - Insert  (0) 2024.01.02