Bubbelsort mit Zufallszahlen

Skyraz00

Grünschnabel
Hallo, ich hab mein BubbelSort Programm aus der Main in eine eigene Funktion gesetzt. Jetzt hab ich das Problem das ich nur noch eine große negative zahl anstelle von Zufallszahlen ausgegeben bekomme.
Ich finde das Problem einfach nicht.

C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void bubbelsort(int a[], int n)
{
    for (int i = 1; i < n; i++)
    {
        for (int j = 0; j < n - 1; j++)
        {
            if (a[i] > a[i + 1])
            {
                int temb = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temb;
            }
        }
    }
    printf("\n\nSortierte aufsteigende Ausgabe:\n");
    for (int i = 0; i<1000; i++)
    {
        printf("%d ", a[i]);
    }
}
int main(void)
{
    int a[1000];
   
    srand(time(NULL));
   
    for (int i = 0; i > 1000; i++)
    {
        a[i] = rand();
    }
    printf("Zufallszahlen\n");
    for (int i = 0; i<1000; i++)
    {
        printf("Zahl %d : %d\n", i + 1, a[i]);
    }
    bubbelsort(a, 1000);
   
}
 
Hoi,

* Du hast zwei verschachtelte Schleifen. Die innere mit dem "j" verwendest du gar nicht, du gehtst rein auf i.
* Das i geht von [1,1000[ und in Zeile 10 greifst du beim letzten Durchlauf auf eine Element ausserhalb des Arrays.
* In Zeile 30 initialisiert du das Arrays mit Zufallszahlen. Hier hast du eine falsche Codition (grösser und kleiner vertrauscht)

Die negativen Zahlen kommen durch den Punkt 3. Dein Array ist nicht initialisiert und beinhaltet somit quasi Zufallswerte (was halt grad an der Adresse im Speicher stand).

Grüsse,
BK
 
Nur eine kleine Anmerkung noch: Falls du irgendwann man wirklich Zufallswerte brauchst (mit verschiedenen schweren Anforderungen wie zB. "nicht immer die selbe Zahl", "Gleichverteilung", "durch Menschen in jedem Fall nicht vorhersagbar und deshalb für Kryptographie geeignet", und/oder anderes), ist das jedenfalls der falsche Weg um dir zufällige Zahlen zu besorgen.
Weil a) gibts bei solchem Code keine Garantie überhaupt irgendeine Zahl zu bekommen (kann auch abstürzen, oder (noch schlimmer) irgendwas komplett unerwartetes anderes machen)
und b) sind die Zahlen eben nicht wirklich "zufällig", egal in welchem Sinn des Worts. Manchmal nicht ganz einfach nachzuvollziehen, vorher sie kommen, aber das wars auch schon.
 
Zurück