Bubble Sort



  • Hallöchen,

    ich hab ein Programm für das Sortierverfahren "Bubble Sort".
    Nun will ich aber, dass ich nicht die Zahlen einlese, sondern dass das Programm dies für mich macht. Angeblich geht dies mit dem folgenden Code:

    for (unsigned int i=0; i < n; i++)
    	A[i] = rand();
    

    Wie bring ich den aber nun in dieses Programm hinein.
    Am ende will ich dann nämlich sehen, ob das Programm länger braucht (bzw. wie lange es braucht) für eine bestimmte Anzahl von Zahlen, die ich aber nicht alle selber von Hand eingeben will, weil das etwas lange dauert 😉

    Eigentlich müsste es doch dorthin, wo es derzeit steht (ohne //) und die do-while schleife dafür weg, bzw umschreiben? Habs bisher net hinbekommen :xmas2:

    Wäre super, wenn mir da jemand helfen könnte.

    Gruß
    Rick

    C++
    
    #include "stdafx.h"
    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    using namespace std;
    
    void main() {
        const int max=100; 
        int n=0, zahl;
        int A[max]={0};
    	int i,j, tmp;
    
    	//for (unsigned int i=0; i < n; i++)
    	//A[i] = rand();
    
    	do {                            // Einlesen der Daten
            cout << "Integer (0 Abbruch): ";
            cin >> zahl;
            A[n] = zahl;
            if (zahl != 0) n++;    // Anzahl der Elemente
        } while (zahl !=0 && n<max);
    
    	time_t vorher=time(NULL);
    
    	// Sortieren
        for (int i=1; i < n; i++)   // Durchläufe
            for (int j=n-1; j>=i; j--) {// ein Durchlauf
                if (A[j-1] > A[j]) { // vertauschen
                    int tmp = A[j-1];
                    A[j-1] = A[j];
                    A[j] = tmp;
                }
            }
        for (int i= 0; i<n ; i++)       // Ausgeben
            cout << A[i] << " ";
    
    	time_t nachher=time(NULL);
    	cout << endl;
    
    	cout << "Dauer: " << nachher-vorher << "sec" << endl;
    }
    


  • Hallo!

    Wenn du mit rand() Zufallszahlen erstellst, dann solltest du folgendes am Programm - Anfang nicht vergessen:

    srand ((unsigned) time (0));
    


  • derRick schrieb:

    const int max=100; 
        int n=0 /* Rest gekürzt */;
        int A[max]={0};
    
        /* Rest gekürzt */
        for (unsigned int i=0; i < n; i++)
            A[i] = rand();
        /* Rest gekürzt */
    

    Beim Kopieren von Code sollte man auch stets ein wenig mitdenken, denn nicht jeder nennt seine Variablen wie Du. Wie groß ist das Array A? Und wie groß ist n? Und von wo bis wo zählt i? 😉

    EDIT: Und "habs bisher nicht hinbekommen" ist eine denkbar schlechte Beschreibung dessen, was an dem geposteten Code nicht funktioniert.



  • derRick schrieb:

    void main() {
        const int max=100; 
        int n=0, zahl;
        int A[max]={0};
    	int i,j, tmp;
        
    	for (unsigned int i=0; i < n; i++)
    	A[i] = rand();
    

    Eine Schleife von 0 bis n mit n = 0. Dann überlege mal, wie oft die Schleife durchlaufen wird. 🙄

    Gruß

    Tntnet



  • @tntnet: Mensch verrat doch nicht gleich alles 😃

    *SCNR*



  • aaaaaaaaaaaaaaaaaah SCHEI... äääh danke! 😋
    Schon dumm, wenn man den Wald vor lauter nackten Frauen nicht sieht, oder so ... :xmas1:

    Nun klappts 1a.
    Dankeschön!


Anmelden zum Antworten