Hallo,
Ich habe als Aufgabe eine HeapSort Variante zu implementieren, die Strings aufsteigend sortiert. Ich habe mich daran versucht, der Sortieralgorithmus funktioniert jedoch nur teilweise. Wenn es maximal 11 Elemente sind gibt es kein Problem, danach werden nur die ersten 6 und die letzten 5 Elemente sortiert. Würde mich freuen wenn Ich diesbezüglich Hilfe bekommen könnte, gerne auch ein völlig anderer Lösungsansatz.
Mfg
PS:
Die Ausgabe der main wäre hier:
a b c d e f i h g j k l m n
Ich habe als Aufgabe eine HeapSort Variante zu implementieren, die Strings aufsteigend sortiert. Ich habe mich daran versucht, der Sortieralgorithmus funktioniert jedoch nur teilweise. Wenn es maximal 11 Elemente sind gibt es kein Problem, danach werden nur die ersten 6 und die letzten 5 Elemente sortiert. Würde mich freuen wenn Ich diesbezüglich Hilfe bekommen könnte, gerne auch ein völlig anderer Lösungsansatz.
Mfg
PS:
Die Ausgabe der main wäre hier:
a b c d e f i h g j k l m n
Java:
[/B]
public class HeapSort {
static int idx = -1;
static String []heap = new String[1000];
static void heapForm(String k){
idx++;
heap[idx] = k;
int child = idx;
String tmp;
int index = idx / 2;
while (index >= 0){
if (heap[index].compareTo(heap[child]) > 0){
tmp = heap[index];
heap[index] = heap[child];
heap[child] = tmp;
child = index;
index = index / 2;
}
else{
break;
}
}
}
static void heapSort() {
int left1, right1;
while (idx >= 0) {
String k;
k = heap[0];
System.out.print(k + " ");
heap[0] = heap[idx];
idx = idx - 1;
String tmp;
int index = 0;
int length = idx;
left1 = 1;
right1 = left1 + 1;
while (left1 <= length) {
if (heap[index].compareTo(heap[left1]) <= 0 &&
heap[index].compareTo(heap[right1]) <= 0){
break;
}
else {
if (heap[left1].compareTo(heap[right1])< 0){
tmp = heap[index];
heap[index] = heap[left1];
heap[left1] = tmp;
index = left1;
}
else {
tmp = heap[index];
heap[index] = heap[right1];
heap[right1] = tmp;
index = right1;
}
}
left1 = 2 * left1;
right1 = left1 + 1;
}
}
}
static void sort(String k[], int n) {
for (int i = 0; i < n; i++) {
heapForm(k[i]);
}
heapSort();
}
public static void main(String[] args)
{
String arr[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n" };
int n = arr.length;
sort(arr, n);
}
}
[B]