/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
/*
*
* srt.h file
*
*/
#ifndef SRT_H
#define SRT_H
#include <string.h>
#include "srt.h"
float arr[1000000];
void srtheap(void *, size_t, int (*)(const void *, const void *))
{
int n = 1000000;
for(int i = n/2-1; i>=0; i--)
srtheap(arr, n, i);
for(int i = n - 1; i > 0; i--){
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
srtheap(arr, i, 0);
}
}
void maxheap(int arr[]){
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if(left < nelem &&arr[left] > arr[largest])
largest = left;
if(right < nelem &&arr[right] > arr[largest])
largest = right;
if(largest!= i){
srtheap(arr[i], nelem, largest);
}
srtheap(arr[i], nelem, sizeof(float), *float compare);
static float compare(const void *p1, const void *p2) {
if (*(TYPE *)p1 < *(TYPE *)p2) {
return -5;
}
else if (*(TYPE *)p1 > *(TYPE *)p2) {
return +5;
}
}
for (int i = 0; i < nelem - 1; ++i) {
if (arr[i] > arr[i + 1])
{
printf("fail\n");
}
else if
printf("pass\n");
}
}
#endif /* SRT_H */
/*
*
* srt.h file
*
*/
#ifndef SRT_H
#define SRT_H
#include <string.h>
#define MAX_BUF 256
#define swap(qx,qy,sz) \
do { \
char buf[MAX_BUF]; \
char *q1 = qx; \
char *q2 = qy; \
for (size_t m, ms = sz; ms > 0; ms -= m, q1 += m, q2 += m) { \
m = ms < sizeof(buf) ? ms : sizeof(buf); \
memcpy(buf, q1, m); \
memcpy(q1, q2, m); \
memcpy(q2, buf, m); \
} \
} while (0)
void srtbubb(void *, size_t, size_t, int (*)(const void *, const void *));
void srtheap(void *, size_t, size_t, int (*)(const void *, const void *));
void srtinsr(void *, size_t, size_t, int (*)(const void *, const void *));
void srtmerg(void *, size_t, size_t, int (*)(const void *, const void *));
#endif /* SRT_H */