/******************************************************************************
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "srt.h"
#define n 1000000
#define nelem(array) sizeof(array) / sizeof((array)[0])
void maxheap(int array[], int i, int nelem)
{
for(int i = nelem/2-1; i >= 0; i--)
for(int i = nelem - 1; i > 0; i--)
{
int temp = array[0];
array[0] = array[i];
array[i] = temp;
}
}
void srtheap(void * buffer, size_t nelem, int (*compare)(const void *, const void *))
{
int i;
int array[1000000];
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if(left < nelem &&array[left] > array[largest])
largest = left;
if(right < nelem &&array[right] > array[largest])
largest = right;
if(largest!= i)
{
int swap = array[i];
array[i] = array[largest];
array[largest] = swap;
}
srtheap(array, nelem, compare);
}
int FloatCompare(const void * p1, const void * p2)
{
return *(float *)p1 - *(float *)p2;
}
void PrintFloatArray(float * array, size_t nelem)
{
for (int i = 0; i < nelem - 1; ++i)
{
if (array[i] > array[i + 1])
{
printf("fail\n");
}
else
printf("pass\n");
}
}
int main()
{
int nelem = 1000000;
int array[1000000];
for (int i = 0; i < nelem - 1; ++i)
{
if (array[i] > array[i + 1])
{
printf("fail\n");
}
else
printf("Pass\n");
return 0;
}
}
#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 */