#include <stdio.h>
#include <time.h>
//build command line
//gcc -Wall timemain.c -lrt -o timemain
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void quicksort(int* a, int lo, int hi)
{
int pivot;
int i, j;
if(lo >= hi)
return;
pivot = a[hi];
j = hi;
i = lo - 1;
while(i < j)
{
while(a[--j] > pivot);
while(a[++i] < pivot && i <= hi);
if(i < j)
swap(a + i, a + j);
}
swap(a + i, a + hi);
quicksort(a, lo, i - 1);
quicksort(a, i + 1, hi);
}
int main(int argc, char * argv[])
{
struct timespec ts, start, end;
if(clock_getres(CLOCK_REALTIME, &ts) == 0)
{
int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
int size = sizeof(a) / sizeof(a[0]);
int i;
clock_gettime(CLOCK_REALTIME, &start);
quicksort(a, 0, size - 1);
clock_gettime(CLOCK_REALTIME, &end);
printf("time for this algorithm = %u nanoseconds\n", (unsigned int)((end.
tv_sec - end.
tv_sec) * 1000000000 + (end.
tv_nsec - start.
tv_nsec))); for(i = 0; i < size; i++)
}
else
{
printf("clock realtime is not supported\n"); }
return 0;
}