Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Bubble Sort mit zufallszahlen

Empfohlene Antworten

Veröffentlicht

Hallo, ich muss ein Programm schrieben in C und kommen nicht mehr weiter.

Es soll ein Bubble sort mit zufallszahlen sein. Die zufallszahlen bekomme ich hin, aber es wird dann nichts sortiert.

ich denke mal das ich in der do while schleife einen fehler habe.

hier noch mein bisheriges programm

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define Anzahl 10

#define true (1)

#define false (0)


int main(){

    int i, x[Anzahl], temp, getauscht; 


    srand(time(NULL)); // Zufallsgenerator auf zufälligen Startwert setzen

    for (i = 0; i < Anzahl; i++) {

        x[i] = rand()%10; // Zufallszahl zwischen 0 und 99 eintragen

        printf(" %3d ",x[i]);

        printf("\n\n");

    }


     do{getauscht=0;

       for (i=0;i<= Anzahl; i++){

           if (x[i] > x[i+1]) {

                        temp=x[i];

                        x[i]=x[i+1];

                        x[i+1]=temp;

                        getauscht=1;


           }

           printf(" %3d ", temp);

       }


       printf("\n");

     }

    while(getauscht=0);




    system("pause");

    return 0;

}

überhilfe bin ich sehr dankbar

okay, das ist mein 1. fehler

habe es jetzt in getauscht > 0 geändert.

richtig?

richtig?
Ja.

Ein weiterer Fehler ist, dass deine for-Schleife zu weit läuft. Der letzte erlaubte Index des Arrays x ist Anzahl-1. Deine Schleifenvariable i läuft bis (einschließlich) Anzahl, und da du mit i+1 auf das Array zugreifst, ist das um 2 zu hoch.

okay, das klingt logisch, habe es jetzt geändert

das "programm" läuft jetzt schon weiter als sonst, aber sortiert nicht alle zahlen bis zum ende durch

das kommt zB wenn ich das programm starte

  0    0    7    7    6    2    5    3    0    1


  2011860181    0    0    7    6    2    5    3    0    1

   7    0    0    6    2    5    3    0    1    7

   7    0    0    2    5    3    0    1    6    7

   6    0    0    2    3    0    1    5    6    7

   5    0    0    2    0    1    3    5    6    7

   3    0    0    0    1    2    3    5    6    7

   2    0    0    0    1    2    3    5    6    7

Drücken Sie eine beliebige Taste . . .

warum steht dort eig so eine lange zahl?

warum steht dort eig so eine lange zahl?
Du gibst ja immer nur temp aus, deine Tauschvariable. Und falls beim ersten Vergleich nicht getauscht wird, weil die ersten beiden Zahlen in der richtigen Reihenfolge sind, wird temp ausgegeben, ohne dass dieser Variable jemals etwas zugewiesen wurde. Was dann da drin steht, ist mehr oder weniger zufällig.

aber es werden nicht alle zahlen bis zum ende sortiert und einige "verschwinden" auch.

woran leigt das?

achso, ist mir gar nicht aufgefallen habe das verändert und jetzt geht es auch

danke für deine hilfe

jetzt hab ich noch ein weiteres problem

ich soll jetzt ein weiteres programm schreiben wo die zufallszahlen nicht sortiert werden, sondern es soll ein zweites array erstellt werden wo die positionen der zahlen drin stehen. dieses array soll sortiert werden und dann mit hilfe des sortierten array sollen die zufallszahlen ausgegeben werden.

hast du ne ahnung wie ich damit anfagen könnte?

jeder zahl von values wird eine zahl von keys zugeordnet.

Das heißt, wenn wir eine Schleife haben, die alle Elemente von keys der Reihe nach durchläuft, haben wir bei keys, die Ausgabe 4,3,2,1,0, right?

Und diese Werte wiederum in values eingesetzt, ergeben ...? Preisfrage *G*

values[4]= ___

values[3]= ___

values[2]= ___

values[1]= ___

values[0]= ___

Edit: Keys muss natürlich die Zahlen von 0 - 4 beinhalten, damit es funktioniert ... Sorry :/

Bearbeitet von lilith2k3

values[5]= _1_

values[4]= _2_

values[3]= _3_

values[2]= _4_

values[1]= _5_

richtig? XD

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.