Distribution Counting
-
Ich bin gerade dabei Distribution Counting zu implementieren. Leider funktioniert meine Ausgabe nicht richtig. Es kommen nur unsortierte Zahlen dabei heraus. Der Sort müsste korrekt sein. Seht Ihr einen Fehler?
#include <stdlib.h> #include <iostream> #include <time.h> using namespace std; /*---------------------------------------------------------------------------------------------- DISTRIBUTION COUNTING*/ void distribution_counting(int field [] , int m, int field_length) { int count [m]; for(int i = 0; i < m; ++i) { count[i] = 0; } for(int i = 0; i < field_length; ++i) { ++count[field[i]]; } for(int i1 = 0, i2 = 0; i1 < m; ++i1) { for(int i3 = 0; i3 < count[i1]; ++i3) { field[i2++] = i1; } } } /*------------------------------------------------------------------------------------------------*/ void print(int * pd, int size) { cout << "Ausgabe: " << endl; for (int c = 0; c < size; ++c) { cout << pd[c] << " "; } cout << endl; } /*----------------------------------------------------------------------------------------------*/ int main() { const int length = 10; const int max = 10; int int_array [10]; int_array [0] = 10; int_array [1] = 9; int_array [2] = 8; int_array [3] = 7; int_array [4] = 6; int_array [5] = 5; int_array [6] = 4; int_array [7] = 3; int_array [8] = 2; int_array [9] = 1; distribution_counting(int_array,max,length); print(int_array,length); system("pause"); return 0; }
-
http://www.lugbz.org/documents/smart-questions_de.html
fehlerbeschreibung fehlt.
benutze einen debugger.
-
shurik'n schrieb:
Ich bin gerade dabei Distribution Counting zu implementieren. Leider funktioniert meine Ausgabe nicht richtig. Es kommen nur unsortierte Zahlen dabei heraus. Der Sort müsste korrekt sein. Seht Ihr einen Fehler?
// ... int main() { const int length = 10; const int max = 10; // <-- hier // ..der Wert 'max' gibt den Wertebereich der Zahlen in 'int_array' an - beginned mit '0'. Da der größte Wert ==10 ist, muss max == 11 sein. Die Zahlen von 0 bis 10 inklusive der 0 und der 10 sind 11 Werte!
Dann sollte es gehen.Gruß
Werner