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


Anmelden zum Antworten