2013-03-22 5 views
3

기수 정렬은 숫자의 숫자를 비교하여 작동한다는 것을 알고 있습니다. 내 질문은, 우리는 숫자의 다른 숫자와 다른 숫자가 있다고 가정합니다. 기수 정렬은 여기서 작동합니까? 예를 들어, 3 개의 숫자와 6 개의 숫자가있는 두 개의 숫자를 비교할 경우 더 작은 숫자의 처음 3 자리 숫자는 0이라고 가정 할 수 있습니다.하지만 구현 방법은 어떻습니까? 우리는 어떻게 프로그램이 충분한 자리수가 없다면 그 자리수가 0이라고 가정하도록 만들 수 있습니까?기수 정렬은 다른 자릿수의 숫자로 작동합니까?

감사합니다.

+2

즉, 예. # – Vesper

+0

모든 문자열이 가장 긴 입력 문자열과 같은 길이가 될 때까지 왼쪽 영점을 채 웁니다. –

답변

2

존재하지 않는 숫자를 추가하거나 시뮬레이션하거나 그룹의 숫자를 정렬해야합니다. 각각의 숫자는 같은 길이의 숫자 만 포함합니다.

이 3 개 개의 숫자

9912 
999 
123 

9912 
0999 

로 변환 할 수 있으며, 일반 기수 정렬을 사용하여 정렬 또는 2 개 개의 독립적 인 그룹으로 정렬 할 수 있습니다 :

9912 

999 
123 

후자는 (가정 오름차순)

123 
999 

과 전 숙박 같은 당신을 제공 할 것입니다. 그런 다음 정렬 된 그룹을 조합합니다 (더 짧은 숫자에서 더 긴 숫자로) :

123 
999 
9912 

그게 전부입니다.

1

는 정수 변수의 수를 가정하면, 다음과 같이 숫자를 추출 할 수있다 (N = 0, 1, 2, ...)

digit = (number/radix^n) % radix