C# 정렬: 정렬 대 OrderBy
C#에는 Sort 및 OrderBy를 포함하여 컬렉션을 정렬하는 여러 옵션이 있습니다. 이 기사에서는 이 두 가지 방법과 해당 알고리즘의 차이점을 자세히 살펴보겠습니다.
Sort
Sort 방법은 QuickSort 알고리즘을 사용하여 내부 정렬을 수행합니다. 이는 불안정한 정렬 알고리즘으로, 정렬 후에 동일한 요소의 순서가 유지되지 않을 수 있음을 의미합니다.
OrderBy
반면에 OrderBy 메서드는 다음을 수행합니다. 안정적인 정렬. 이는 동일한 요소가 정렬 후에도 상대적 순서를 유지함을 의미합니다. OrderBy는 내부적으로 병합 정렬 알고리즘을 사용합니다.
성능 비교
Sort와 OrderBy의 성능은 컬렉션 크기, 요소 유형 등의 요소에 따라 달라집니다. 및 정렬 기준입니다. 일반적으로 소규모 컬렉션의 경우나 기본 데이터 유형별로 정렬할 때 정렬이 더 빠릅니다. 그러나 대규모 컬렉션이나 복잡한 정렬 기준의 경우 안정적인 정렬 알고리즘으로 인해 OrderBy가 더 효율적일 수 있습니다.
사용 시나리오
Sort는 수행해야 할 경우에 적합합니다. 내부 정렬이며 동일한 요소의 순서를 유지할 필요가 없습니다. OrderBy는 동일한 요소의 순서를 유지하는 것이 중요하거나 정렬 후 추가 작업(예: 필터링 또는 프로젝션)을 수행해야 하는 경우에 선호됩니다.
예
고려하세요. 다음 예:
List<Person> persons = new List<Person>(); persons.Add(new Person("P005", "Janson")); persons.Add(new Person("P002", "Aravind")); persons.Add(new Person("P007", "Kazhal"));
Sort를 사용하면 목록을 다음과 같이 정렬할 수 있습니다. name:
persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));
OrderBy를 사용하면 사용자 지정 비교자를 사용하여 안정적인 정렬을 수행할 수 있습니다.
var query = persons.OrderBy(n => n.Name, new NameComparer()); class NameComparer : IComparer<string> { public int Compare(string x, string y) { return string.Compare(x, y, true); } }
이 예에서는 OrderBy가 더 적합합니다. 이름은 보존됩니다.
위 내용은 C# 정렬: 정렬과 OrderBy: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!