Anfänger - Elemente im int Array sortieren



  • Hallo zusammen,
    Aufgabe war die Sortierung eines int Array´s. Die Sortierung soll von groß nach klein erfolgen. Mein Programm erstellt zwar die Sortierung, doch bin ich mir beim Stil nicht sicher. Die Funktion ist gegeben, aber ist es auch leicht lesbar?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int iSortieren [] = { 20, 5, 1, 21, 29, 19, 30};
        int temp = 0;
        int i = 0;
    
    while (i!=6)
        {
            if (iSortieren[i]<iSortieren[i+1])
            {
                temp = iSortieren[i];
                iSortieren[i] = iSortieren[i+1];
                iSortieren[i+1] = temp;
                i=-1;
            }
        i++;
        }
    
    for (int i=0; i < 7; i++)
            cout << iSortieren[i]<<endl;
    
            return 0;
    }
    


  • std::sort



  • Das ist (noch) kein guter Stil für C++.

    Zuerst fällt mir auf, dass main() zwei Funktionen hat: sortieren und ausgeben. Das würde ich aufteilen in - logisch - sortieren() und ausgeben() .

    Dann die "magic numbers" z.B. in while (i!=6) , bzw. for (int i=0; i < 7; i++) . Zum einen kann Dein Programm dann nur Arrays einer bestimmten Größe sortieren, zum anderen muss ich erstmal nachzählen, ob das überhaupt stimmt.

    Weiterhin kannst Du temp und i lokaler definieren.

    Ob der Algorithmus (speziell dieses i=-1 ) richtig ist: keine Ahnung - aber das war auch nicht Deine Frage... 🙂

    Was meinst Du mit "Die Funktion ist gegeben"?



  • Mit welcher IDE entwickelst du?



  • Dein Algorithmus ist sehr ineffizient, aber zumindest so gut lesbar und einfach nachvollziehbar, dass ich das sehr schnell erkannt habe 🙂
    Wie mein Vorposter schon schreibt, gibt es das in der C++ - Standardbibliothek aber schon fertig.
    Falls Du aber ausdrücklich einen eigenen Algorithmus implementieren solltest ... ja, ich persönlich finde ihn les- und nachvollziehbar.



  • Geht es ums lernen? Dann ist Bubblesort ganz nützlich, weil es einfach ist. Auslagern in eine Funktion wäre toll, statt while eine for-schleife, Variablen so lokal wie möglich halten (temp).

    Ansonsten: Finger weg! std::sort ist üblicherweise ein hochoptimierter und möglichst effizienter Algorithmus und dabei auch noch sehr übersichtlich.



  • Hallo zusammen,
    jetzt weiß ich auch wie die Sortierung heißt: Bubblesort. War für mich halt eine Aufgabe die es zu lösen galt. Funktionen sind in der nächsten Lektion und dann kommen die Zeiger dran. Werde dann meinen Bubblesort noch anders umschreiben.

    Ich verwende Codeblock als IDE. Der Debugger ist eine große Hilfe um zu sehen welchen Wert beispielsweise eine Variable in eine Schleife hat.

    Sage vielen Dank für die ehrlichen Kommentare und ich werde die Anmerkungen hoffentlich im nächsten Programm zielgerecht umsetzen können 🙂

    Speer


Log in to reply