문제

CRLS :

여기에 이미지 설명을 입력하십시오 >>

나는 텍스트를 노란색으로 이해하지 못합니다.우리가 가장 중요한 숫자로 정렬하면 radix sort가 그렇게 잘 작동하지 않는 이유는 무엇입니까?어떤 여분의 카드 더미 "가 그것을 언급하는 것입니까?

아마도 카드로 예제를 따르지 않고 실제 숫자의 예가 가장 좋습니다.


모든 값이 D 자리 숫자 인 경우에도 MSD DOE가 작동하지 않는 것처럼 순위 을 정렬하는 데 도움이되는 경우 :

Input   (1)   (2)   (3)
        *      *      *
 321    132   321   321
 522    321   426   522
 132    426   522   132
 426    522   132   426
.

여기서 (i)는 이전 열을 i 번째 가장 높은 숫자로 정렬 한 결과입니다.

도움이 되었습니까?

해결책

그것은 작동 할 것입니다. 유일한 문제는 트랙이 어려운 중간 결과에 대한 많은 여분의 더미를 생성한다는 것입니다.

정렬 알고리즘이 $ d $ - 가장 중요한 숫자에서 시작하는 숫자를 정렬하는 경우, 처음에는 10 개의 더미를 만듭니다. 0, 다른 하나는 1 등을 시작한 것들을 위해) 책에서 설명한대로 반복적으로 각 더미를 정렬합니다.

문제는 0으로 시작하는 숫자 더미를 정렬하는 것입니다. 알고리즘은 10 개의 더미를 만들어야합니다 (00부터 시작하는 숫자에 대해 두 번째 숫자에 대해 두 번째 숫자 등)을 만들어야한다는 것입니다. 09부터 시작하는 숫자.

이렇게하면 우리는 지금까지 19 개의 더미를 만들었습니다. 00으로 시작하는 숫자의 더미를 정렬하려면 10 개의 더미를 만들어야합니다. 이 프로세스가 $ d $ 숫자가 정렬 될 때까지 계속해서 많은 꼭지를 만들어 낼 수 있습니다 (얼마나 많은?).

이것은 책이 언급 한 여분의 더미입니다.

LSD RADIX 정렬을 사용하는 경우 숫자를 전혀 분할 할 필요가 없습니다. 마지막 숫자로 입력 더미를 정렬 할 수 있습니다. $ d $ 단계의 단계를 수행하면 예상 결과로 끝나는 단계를 수행 할 수 있습니다. .

직감은 다음과 같습니다. $ d $ $ 2 $ 이되고 $ 83 $ , $ 19 $ $ 17 $ 입력이됩니다. MSD RADIX 정렬의 첫 번째 단계는 $ 17 $ $ 83 $ . 그런 다음 두 번째 숫자로 동일한 전체 파일을 정렬하면 $ 83 $ $ 83 $ $ 17 $ 으로 끝납니다. 그것은 틀렸다. 알고리즘이 작성한 이전 정렬을 "중요합니다"라는 알고리즘이 만든 이전 정렬을 "기억"해야하기 때문에 더미를 분할해야합니다. 반대로 LSD Radix 정렬의 첫 번째 단계는 $ 17 $ 이전 $ 83 $ 을 배치합니다. 그런 다음 $ 19 $ . 전체 파일을 가져 와서 첫 번째 숫자로 정렬하면 $ 17 $ , $ 19 $ SPAN 클래스="수학 용기"> $ 83 $ 이 올바른 것입니다. 알고리즘의 현재 단계가 이전의 것들의 "중요"이기 때문에 더미를 분할 할 필요가 없으며 이전 주문을 "엉망으로"할 수 있습니다 (예 : $ 83 $ $ 17 $ $ 19 $ ). 이것은 각 숫자에 사용 된 정렬 알고리즘이 안정적이기 때문에 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top