2016-04-16 18 views
0

Ich versuche, eine Heapsort-Methode zu schreiben, die nur die Sortierung innerhalb eines bestimmten Bereichs durchführt, der an die Methode übergeben wird. Die Bereiche low und high werden übergeben und diese Werte entsprechen den Werten innerhalb des Heaps, nicht den Indizes des Heaps. Zum Beispiel könnte das Eingabearray sein: 28 10 49 20 59 61 17 und wenn niedrig = 49 und hoch = 61, würde das resultierende Array nach dem Heapsort wie folgt aussehen: 28 10 20 49 59 61 17. Die Werte außerhalb des Reichweite bleibt unverändert. Ich habe bereits eine funktionierende Heapsort-Methode, aber meine Frage ist, wie kann ich diese Methode so ändern, dass sie innerhalb eines vorgegebenen Bereichs sortiert wird?Heapsort innerhalb eines gegebenen Bereichs

Wie Sie sehen können, akzeptiert meine Methode niedrig und hoch, tut aber momentan nichts mit diesen Werten. Ich habe versucht, ein boolesches Flag zu halten, um zu bestimmen, wann der Algorithmus in Reichweite ist, und nur zu sortieren, wenn dieser Boolesche Wert wahr ist. Aber das hat nicht funktioniert. Wenn mir jemand helfen könnte, wäre das sehr zu schätzen.

Danke!

+0

Was Sie wollen, ist nicht sortieren. Die Werte 41, 59 und 61 sind bereits im ursprünglichen Array sortiert. Was Sie wollen, ist das Array neu anzuordnen, so dass alle Werte zwischen 49 und 61 zusammen sind. Es ist nicht klar, wie die Position der Gruppe sein sollte. –

+0

Offensichtlich besitzen Sie nicht die Intelligenz, um das zu verstehen, was ich will, sortierend. Dein Kommentar macht keinen Sinn, denn 41 ist kein Wert, den ich in meinem Beispiel angegeben habe. Du musst wirklich darüber nachdenken, bevor du solch einen dummen Kommentar machst. –

+0

Nein. Ihre Frage ergibt keinen Sinn. Zum Beispiel sagen Sie, dass alle Werte außerhalb des Bereichs 49 bis 61 unverändert bleiben, aber die 20 ändert ihre Position. Und die Subsequenz von 49, 59 und 61, wenn sie von den Werten außerhalb des Bereichs isoliert ist, ist bereits sortiert. Mein Kommentar war nicht dumm. Ihre Antwort, auf der anderen Seite ... –

Antwort

0

Sie könnten ein neues Array nur mit Werten im angegebenen Bereich erstellen und dann nur ein neues Array heapsort. Ersetzen Sie dann die Elemente des ursprünglichen Arrays.

Verwandte Themen