Laden...

Bubblesort-Sortieraufgabe in "Quicksort" durchführen

Erstellt von Manfred77 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.099 Views
M
Manfred77 Themenstarter:in
1 Beiträge seit 2018
vor 5 Jahren
Bubblesort-Sortieraufgabe in "Quicksort" durchführen

Hallo zusammen,

ich habe ein Problem. Und zwar müssen wir in der Schule eine Aufgabe, die wir zuvor mit Bubblesort gelöst haben, jetzt mit "Quicksort" lösen.

Dabei sollen in der Konsole verschiedene Zahlen eingegeben werden und diese dann anschließend über "Quicksort" in die richtige Reihenfolge (zunehmend/abnehmend) gebracht werden.

Meine Lösung für BubbleSort sieht momentan so aus (funktioniert auch soweit ganz gut):


namespace BubbleSort_Aufgabe
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Bitte Größe des Arrays eingeben:");

            int i = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Bitte Zahlen des Arrays eingeben: ");
            int[] array = new int[i];
            for (int K=0; K < i; K++)
            {
                array[K] = Convert.ToInt32(Console.ReadLine());
            }

            int hindex = i - 1;
            int x = 0;
            int temp = 0;

            bool tausch = true;

            while (tausch == true)
            {
                tausch = false;
                x = 0;

                while (x < hindex)
                {
                    if (array[x] < array[x + 1])
                    {
                        temp = array[x];
                        array[x] = array[x + 1];
                        array[x + 1] = temp;

                        tausch = true;
                        x = x + 1;
                    }
                    else
                    {
                        x = x + 1;
                    }
                }
                Console.WriteLine("Ausgabe: ");
                for (x = 0; x < i; x++)
                {
                    Console.WriteLine(Convert.ToInt32(array[x]));
                }
                Console.ReadLine();
            }
        }
    }
}

Bin dankbar für jede Hilfe!!!

LG Manfred

6.911 Beiträge seit 2009
vor 5 Jahren

Hallo Manfred77,

vorneweg: schau dir bitte [Hinweis] Wie poste ich richtig? an und beachte das auch. Genauso ist im Titel ein "Bitte um Hilfe!!!" nicht nötig, denn in fast jedem Thread bittet jemand um Hilfe.

Ein paar Hinweise zum gezeigten Code:

  
int i = Convert.ToInt32(Console.ReadLine());  
  

Hier wäre statt Convert.ToInt32 die Verwendung von int.TryParse besser bzw. sicherer, da so auch Fehleingaben behandelt werden können, währen Convert.ToInt32 das Programm mit einem Fehler abstürzen lässt.

while (tausch == true)  

[Tipp] Anfängerhinweis == true / == false

Ansonsten: was hast du denn in Bezug auf Quicksort schon probiert?
Falls du dir erhoffst, dass wir dir den Code dazu liefern, so ginge das nur via Jobbörse, denn das ist nicht der Sinn eines Forums (siehe eingangs erwähnten Link).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

T
2.224 Beiträge seit 2008
vor 5 Jahren

Anstelle der äußeren while Schleife, hätte ich direkt eine do..while genommen.
Da du immer mindestens einmal durch die Schleife durch musst, da du nicht weißt ob es Elemente zum tauschen gibt.
while geht zwar auch, wird aber schon durch dein bool tausch mit direktem true wieder etwas unschön gelöst.

Ansonsten wäre es auch sinnvoller, deinen Quicksort Ansatz noch zu posten.
Der Bubblesort ist zwar die Ausgangsgrundlage aber ohne eigenen Code und Info wo es noch Probleme/Fehler gibt, kann man dir nicht helfen.

Wie gfoidl schon sagt, schreiben wir keine Lösungen für andere.
Das Forum ist mehr begleitend und unterstützend um dir bei der Lösung zu helfen.

Nachtrag:
Deine innere while Schleife kannst du auch mit einer for Schleife lösen.
Den mit deinem x/index Ansatz baust du auch nur eine for Schleife nach.
In einer for Schleife, nicht foreach, ist es auch okay die jeweilige Liste/Array zu verändern.

Nachtrag 2:
In der inneren for Schleife, kannst du dir bei der Ausgabe des aktuellen Werts aus dem Array auch das Convert.ToInt32 sparen.
Da du im Array schon int speicherst, versuchst du int nach int zu konvertieren, was ja nicht nötig ist.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

1.029 Beiträge seit 2010
vor 5 Jahren

Hallo Manfred,

wo hängts denn bei der Implementierung? Man findet ja sogar auf Wikipedia Pseudo-Code zur jeweiligen Implementierung...

LG