사용자 입력 값을 기수 정렬 알고리즘의 매개 변수로 전달하는 방법을 이해하는 데 문제가 있습니다.기수 정렬 알고리즘의 어려움
는 내 할당 클래스 다이어그램이 여기에 표시됩니다. 보시다시피 클래스 생성자 RadixSort는 (int radix) 및 (int exponent)를 가져와야합니다. "기수"변수는 수치 기반 (즉, 자료 10)으로 사용되며 "지수"는 모든 입력 수치를 정렬하는 데 사용됩니다.
내 코드는 하나의 문제를 제외하고는 완벽하게 작동합니다. 기수를 직접 입력 할 때만 작동합니다. 여기에 중요한 내 코드의 일부입니다 : 내가 생각 해요
int count[10] = { 0 };
복용 할 수 있도록 : 나는 무엇을 말할 수에서
RadixSort(int radix, int exponent): SortRoutine() {
cout << "Radix: " << radix << endl;
cout << "Exponent: " << exponent << endl;
setRadix(radix);
setExponent(exponent);
}
void sort(int array[], int size) {
cout << "-Initiating Radix Sort-" << endl;
setSize(size);
int max = getMax(array, size);
int radix = getRadix();
int * output = new int[size];
for (int exponent = getExponent(); max/exponent > 0; exponent *= radix) {
radixAlgorithm(array, size, radix, exponent, output);
}
}
void radixAlgorithm(int array[], int size, int radix, int exponent, int output[]) {
int i;
int count[10] = { 0 };
for (i = 0; i < size; i++)
count[(array[i]/exponent) % radix]++;
for (i = 1; i < radix; i++) {
count[i] += count[i - 1];
}
for (i = size - 1; i >= 0; i--) {
output[count[(array[i]/exponent) % radix] - 1] = array[i];
count[(array[i]/exponent) % radix]--;
}
for (i = 0; i < size; i++)
array[i] = output[i];
for (i = 0; i < size; i++) {
cout << array[i] << " ";
}
cout << endl;
}
일들이 radixAlgorithm 섹션에 잘못된 시작 갈 곳이있다 사용자 입력에서 기수. 나는이에 그것을 만드는, 그렇게하려고한다면, : 기수가 일정하므로 사용자 입력, 그리고 있어야하기 때문에
이array type 'int[radix]' is not assignable.
expression did not evaluate to a constant.
, 내가 해달라고 :
int count[radix] = { 0 };
나는이 오류 기수를 count [] 배열의 기본으로 사용할 수있는 방법을 이해하십시오.
더 좋은 방법이 있나요? 너무 복잡하게 만들었나요? 나는 형식을 사용하도록 강요당하는 다른 방법으로 기수 정렬을 수행하는 방법을 이해하지 못합니다.
생성자에 대해 설명합니다.
조언이나 개선 된 방법이 있습니까?
['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector)를 사용 해본 적이 있습니까? –