질문은 The Algorithm Design Manual의 질문입니다. 나는 그것에 대해 연구했지만 올바른 대답에 도달하는 방법을 찾지 못했습니다.배열의 고유 정수의 개수는 O (log n)입니다. 그런 시퀀스를 정렬하는 O (n log log n) 최악의 경우 시간 알고리즘을 얻는 방법?
질문 : 우리는 S에서 고유 한 정수의 수가 O (log n)가되도록 많은 중복을 갖는 n 개의 정수로 이루어진 시퀀스 S를 정렬하려고합니다. O (n log log n) 최악의 경우 시간 알고리즘을 사용하여 그러한 시퀀스를 정렬하십시오.
나는이 모든 별개의 요소들을 먼저 골라서 logn 길이의 배열을 만들고 주파수를 기록하고 정렬 할 수있을 것이라고 생각한다. 그러나 내 첫 번째 단계는 너무 많은 시간을 날려 버리는 것 같습니다 ... 어떤 우수한 선택 방법인가요, 아니면 완전히 잘못된 방법입니까? 감사합니다
"나는이 모든 별개의 요소를 먼저 선택하여 logn 길이의 배열을 만들고 주파수를 기록하고 정렬 할 수 있다고 생각합니다." 아마도 데이터 구조의 선택을 제외하고 나에게 합리적이라고 생각합니다. "그러나 내 첫 발걸음은 너무 많은 시간을 날려 버리는 것 같다."너 설명 할 수 있니? –
시퀀스 S에서 중복되는 정보가 있습니까? 왜 당신은 O (log n) 개의 별개의 정수를 S로 가정 할 수 있습니까 ?? S에서 n 개의 고유 정수가 가능할 수 있습니다. –
*** X ***는 고유 한 정수의 수이고, * log n *이됩니다. 그런 다음 문제는 *** O (n log X) ***에 정렬되는 알고리즘을 요구합니다. 문제를 해결 한 후 *** X ***을 *** log n ***로 바꾸십시오. – jww