258
void heap_copy(int n, float arr[], float out[])
260
void heap_copy (n, arr, out)
269
printf("Copying array of size %d\n",n);
271
for (j=0; j<n; j++) out[j] = arr[j];
277
int heap_compare(int n, float arr1[], float arr2[])
279
int heap_compare (n, arr1, arr2)
284
/* sort distribution (heapsort) */
289
printf("Comparing arrays of size %d\n",n);
294
for (j = 0; j < 4; j++)
295
printf("HEAPSORT: Array elements [%d] = %f %f\n",j,arr1[j],arr2[j]);
296
for (j = n-4; j < n; j++)
297
printf("HEAPSORT: Array elements [%d] = %f %f\n",j,arr1[j],arr2[j]);
300
for (j = 0; j < n; j++)
302
// printf("Index : %d\n",j);
303
if (arr1[j] != arr2[j]) {
305
printf("HEAPSORT: Array difference at index %d (%f, %f)\n",j,arr1[j],arr2[j]);
308
printf ("Comparison flag = %d\n",check);
314
void heap_sort (int n, float arr[])
316
void heap_sort (n, arr)
320
/* sort distribution (heapsort) */
325
for (j = 1; j < n; j++)
329
while (i >= 0 && arr[i] > a)
258
341
float heap_median (int n, float arr[])
260
343
float heap_median (n, arr)
264
347
/* find median of distribution (heapsort) */
269
for (j = 0; j < n; j++)
272
for (j = 1; j < n; j++)
276
while (i >= 0 && b[i] > a)
353
b = (float*) malloc ((size_t)((n)*sizeof (float)));
355
heap_copy(n, arr, b);
356
// printf("heap_sort: Comparing copies\n");
357
// heap_compare (n, arr, b);
283
360
index = (n - 1) / 2;
364
// median = (n % 2 ? b[n2p] : 0.5*(b[n2]+b[n2p])); // b[(n-1)/2];
367
// printf("heap_sort: Median value %f\n",hmed);