Jetzt kommen wir der sache endlich näher
1. sollte kein Problem sein weil wie ich bereits beschrieben habe das du ein Dummy Speicher benötigst welcher Einen einzigen Wert aufnehmen muss. Sortieren ohne einen wert wo anders zwischen zu lagern ist gar nicht möglich. Und kein Verfahren bzw dessen Umsetzung sieht keinen Zwischen lagern einzelner werte/Objekte vor
angenommen du bis an stelle array[x] du willst den wert von array[f] nach x rüber haben, dann nimmst du array[x] in den dummy machst array[x] = array[f] und anschließen array[f] = dummy. Schon hast du inplace werte getauscht.
Alleine für das raus schreiben vom Heap bereich würde es ungefähr so aussehen
Code:
for(int i = array.lenght - 1; i <= 0; i-- ){
dummy = array[0];
array[0] = array[i];
array[i] = dummy;
array = short_array_Zwischen_0_Und_i_(array, i);// <-- Hierbei sollte der der bereich
//ab i nicht mehr verändert werden
}
der Code ist nur geschmiert sollte aber deutlich machen wie du ungefähr vorgehen musst.
Zu 2: Und Min Heap bedeutet nur das das die Art und weiße wie deine werte verglichen und sortiert werden ein bestimmte ist.
Natürlich es mit einem Min Heap ist möglich.
Beispiel
Beispiel Array felder --> 5,4,8,7,3,9,2,1
dein heap beginnt mit --> 1
An der Spitze des Min Heaps steht der Kleinste wert, an welche stelle in das sortierte Array schreibst ist deine sache es muss nur das raus kommen was du willst.
Absteigend deute ich so 9,8,7,6,5,4,3,2,1
Wenn mit Absteigend das gemeint ist wie ich es verstehe nimmst du die spitze des Heap in deinen dummy Speicher (also beim ersten mal die 1) und schreibst den Letzten wert des Arrays (Heaps) an die stelle wo die spitze des Heaps war und den wert welcher die Heap spitze war aus dem dummy an die nun freie stelle
Also dein Array [ <Dein Heap größe 9 stellen> ]
Also dein Array [ <Dein Heap größe 8 stellen> ,1 ]
Also dein Array [ <Dein Heap größe 7 stellen> ,2,1 ]
Also dein Array [ <Dein Heap größe 6 stellen> ,3,2,,1 ]
Also dein Array [ <Dein Heap größe 5 stellen> ,4,3,2,1 ]
Also dein Array [ <Dein Heap größe 4 stellen> ,5,4,3,2,1 ]
Also dein Array [ <Dein Heap größe 3 stellen> ,6,5,4,3,2,1 ]
Also dein Array [ <Dein Heap größe 2 stellen> ,7,6,5,4,3,2,1 ]
Also dein Array [ <Dein Heap größe 1 stellen> ,8,7,6,5,4,3,2,1 ]
Also dein Array [ <Dein Heap größe 0 stellen> ,9,8,7,6,5,4,3,2,1 ]
Wenn du die Sortier richtung wechseln willst bleiben zwei möglichkeiten
1. Anstellen Min Heap MAx Heap nutzen.
2. richtung aus der du vom heap ins array schreibst ändern
Also dein Array [ 1, <Dein Heap größe 8 stellen> ]
Also dein Array [ 1,2,3,4,5, <Dein Heap größe 4 stellen> ]
Also dein Array [ 1,2,3,4,5,6,7,8,9, <Dein Heap größe 0 stellen> ]