다음 두 알고리즘이 어떻게 작동하는지 설명해 주시겠습니까?함수는 어떻게 작동합니까?
:
int countSort(int arr[], int n, int exp)
{
int output[n];
int i, count[n] ;
for (int i=0; i < n; i++)
count[i] = 0;
for (i = 0; i < n; i++)
count[ (arr[i]/exp)%n ]++;
for (i = 1; i < n; i++)
count[i] += count[i - 1];
for (i = n - 1; i >= 0; i--)
{
output[count[ (arr[i]/exp)%n] - 1] = arr[i];
count[(arr[i]/exp)%n]--;
}
for (i = 0; i < n; i++)
arr[i] = output[i];
}
void sort(int arr[], int n)
{
countSort(arr, n, 1);
countSort(arr, n, n);
}
나는이 배열에 알고리즘을 적용하고 싶어
이 for 루프에서 countSort (arr, n, n) 함수를 호출하면
for (i = n - 1; i >= 0; i--)
{
output[count[ (arr[i]/exp)%n] - 1] = arr[i];
count[(arr[i]/exp)%n]--;
}
출력이 [-1] = arr [4]가됩니다.
그러나 배열에는 이러한 위치가 없습니다 ...
내가 잘못 했나요?
EDIT [] 도착 배열을 고려 = {10, 6, 8, 2, 3}, 어레이 카운트가 다음 요소를 함유 할 것이다 :
이들 숫자 표현하는 일을 ? 어떻게 사용합니까?
이 그런 식으로해야 하는가?(count = (arr [i]/exp) % n] - 1] = arr [i]; count [(arr [i]/exp) % n] -; } –
@clcto 함수가 어떻게 작동하는지 설명해 주시겠습니까? –
[설명을 보려면이 부분을 읽으십시오.] (http://en.wikipedia.org/wiki/Radix_sort) – JS1