Moin
Habe folgendes Skript:
Bisher hat es funktioniert, jedoch habe ich jetzt aufeinmal das Problem dass der Teil von Zeile 75- 80 nicht ausgefuehrt wird!
Woran kann das liegen? Ich weiss aktuell nicht wo der Fehler liegt
C
#include <stdio.h>
#include <stdlib.h>
void quicksort(int *A, int len);
int heaparray[100];
int max (int *a, int n, int i, int j, int k)
{
int m = i;
if (j < n && a[j] > a[m]) {
m = j;
}
if (k < n && a[k] > a[m]) {
m = k;
}
return m;
}
void downheap (int *a, int n, int i)
{
while (1) {
int j = max(a, n, i, 2 * i + 1, 2 * i + 2);
if (j == i) {
break;
}
int t = a[i];
a[i] = a[j];
a[j] = t;
i = j;
}
}
void heapsort (int *a, int n)
{
int i;
for (i = (n - 2) / 2; i >= 0; i--) {
downheap(a, n, i);
}
for (i = 0; i < n; i++) {
int t = a[n - i - 1];
a[n - i - 1] = a[0];
a[0] = t;
downheap(a, n - i - 1, 0);
}
}
void quicksort(int *A, int len)
{
if (len < 2) return;
int pivot = A[len / 2];
int i, j;
for (i = 0, j = len - 1; ; i++, j--)
{
while (A[i] < pivot) i++;
while (A[j] > pivot) j--;
if (i >= j) break;
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
quicksort(A, i);
quicksort(A + i, len - i);
}
int main () {
printf("\n Filling array with %lu elements \n",sizeof(heaparray));
for(int zf;zf<sizeof(heaparray);zf++)
{
int r = rand() % 20;
heaparray[zf]=r;
printf("%d",r);
}
printf("\n\n ");
printf("\nSorting..\n");
printf("\n\n ");
if(sizeof(heaparray) != sizeof(heaparray))
return printf("Something went wrong during filling");
heapsort(heaparray,sizeof heaparray);
printf("\n\n ");
for(int zn;zn<sizeof(heaparray);zn++)
{
printf("%d",heaparray[zn]);
}
return 0;
}
Alles anzeigen