Ich versuche, eine Heapsort Methode in Java zu schreiben, aber es ist nicht genau das funktioniert, wie ich es will:Was ist falsch an meinem HeapSort-Code?
public class HeapSort {
private static int n;
private static void swap(int[] A, int a, int b)
{
int tmp = A[a];
A[a] = A[b];
A[b] = tmp;
}
private static void insert(int[] A, int i)
{
int left = i * 2;
int right = left + 1;
int max = i;
if (left <= n && A[left] < A[max]){
max = left;
}
if (right <= n && A[right] > A[max]) {
max = right;
}
if (max != i) {
swap(A, i, max);
insert(A, max);
}
}
public static void HeapSort(int[] A)
{
n = A.length - 1;
for (int i = n/2; i >= 0; i--)
insert(A, i);
for (int i = n; i > 0; i--) {
swap(A, 0, i);
n--;
insert(A, 0);
}
}
public static void main(String[] args){
int[] A = new int[] {9, 2, 8, 1, 4};
System.out.println(java.util.Arrays.toString(arr));
HeapSort(A);
System.out.println(java.util.Arrays.toString(arr));
}
}
Es arbeitet mit einigen Arrays jedoch Arrays wie 9, 2, 8, 1, wird 4 erhalten sortiert nach 1, 4, 2, 8, 9. Warum sortiert das Array nicht korrekt?
Es funktioniert für 9, 2, 8, 1, 4, aber es funktionierte nicht für 19, 6, 28, 1, 0. Es gab 0, 1, 6, 28, 19. Also warum nicht Tausch 28 und 19? –
Ok, der aktualisierte Code funktioniert jetzt. Ich frage mich nur, was die Laufzeit ist. –