LSD 기수 정렬에서 다음 (16 진수)를 정렬하려고 할 때 10hr 이상을 소비했지만 아무런 도움이되지 않았습니다. 웹상의이 주제에 대한 자료는 거의 없습니다.Radix Sort Base 16 (Hexadecimals)
0 4c7f CD80의 41fc의 782c 8b74 7eb1 9a03 AA01 73f1
내가 마스크 각 16 진수 (4 비트)를 처리하는 비트 연산을 수행 할 필요가 알고 있지만, 아무런 생각이 없다 방법과 장소 .
void rsort(int a[], int n) {
int max = getMax(a, n);
for (int exp = 1; max/exp > 0; exp *= 10) {
ccsort(a, n, exp);
}
}
int getMax(int a[], int n) {
int max = a[0];
int i = 0;
for (i = 0; i < n; i++) {
if (a[i] > max) {
max = a[i];
}
}
return max;
}
void ccsort(int a[], int n, int exp) {
int count[n];
int output[n];
int i = 0;
for (i = 0; i < n; i++) {
count[i] = 0;
output[i] = 0;
}
for (i = 0; i < n; i++) {
++count[(a[i]/exp) % 10];
}
for (i = 1; i <= n; i++) {
count[i] += count[i - 1];
}
for (i = n - 1; i >= 0; i--) {
output[count[(a[i]/exp) % 10] - 1] = a[i];
--count[(a[i]/exp) % 10];
}
for (i = 0; i < n; i++) {
a[i] = output[i];
}
}
에서 코드 (이해)을 사용하고 또한이 문제에 유래 모두 확인했지만, 그들 중 누구도 세부 사항을 포함하지 않습니다.
변수'exp'가 올바르게 사용되지 않습니다. [이 기사에서는 예제를 참조하십시오.] (https://en.wikipedia.org/w/index.php?title=Radix_sort&diff=654611185&oldid=654610962). ** "Example in C"** 섹션으로 스크롤해야합니다. 그들의 'exp'는 1에서 시작하여 루프를 통과 할 때마다 밑으로 곱해집니다. – user3386109
@WeatherVane은 텍스트가 아니라 배열의 일부입니다 (예 : main 함수의 배열). – itproxti