요소 목록을 보면, 어떤 키로 요소를 그룹화하는 가장 효율적인 방법은 무엇입니까?목록의 요소를 효율적으로 그룹화
예를 들어 입력이 {a,c,a,b,c,b,b}
인 경우 유효한 출력은 {a,a,b,b,b,c,c}
또는 {b,b,b,c,c,a,a}
이 될 수 있습니다.
분명히 키의 유형이 주문을 관찰하면 정렬 알고리즘을 사용하여 O(nlogn)
의 복잡성을 제공 할 수 있습니다.
그러나 키는 동등 함만 비교할 수 있지만 순서는 비교할 수 없습니다. 예를 들어, typeof(dog) != typeof(cat)
이지만 typeof(dog) < typeof(cat)
인지 묻는 것은 의미가 없습니다.
물론 주문을 강제 할 수 있지만 (예 : obj.GetType().ToString()
및 어휘 순서 사용) 엄격한 순서가 필요하지 않기 때문에 (그룹화 만) 정렬보다 효율적인 방법이 있는지 궁금합니다.
당신은 얼마나 키가 않습니다에 각 항목을 삽입 할 수 있을까? O (n) 또는 훨씬 작습니까? –
"적절한 위치에"그룹화를 원하거나 요소를 복사하고 다른 정렬 된 목록을 만드는 것이 좋습니다. –
@OhadEytan 키의 수는 다양하지만 대개 1에 가깝거나 n에 가깝습니다. 이 작업은 많은 입력에서 수행되므로 "적절한"알고리즘을 선호합니다. – MikeM