1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
#include <stdio.h>
#include <stdlib.h>
static size_t g_nb_elem;
static size_t g_size_elem;
static void quicksortRec(void *start_tab, int premier, int dernier)
{
}
static int diff(void const *a, void const *b)
{
return (0);
}
static void swap(void *start_tab, int const a, int const b)
{
void *a_add;
void *b_add;
void *temp;
void *see;
a_add = (start_tab) + a * g_size_elem;
b_add = (start_tab) + b * g_size_elem;
see = start_tab + (b + 1) * g_size_elem;
temp = malloc(g_size_elem);
//printf("valeur start[%p]\n", temp);
//printf("valeur de a [%i]\n", (*(int*)a_add));
//printf("valeur de b [%i]\n", (*(int*)b_add));
//printf("valeur de see [%i]\n", (*(int*)see));
temp = memcpy(temp, a_add, sizeof(g_size_elem));
a_add = memcpy(a_add, b_add, sizeof(g_size_elem));
b_add = memcpy(b_add, temp, sizeof(g_size_elem));
//printf("adresse start[%p]\n", temp);
//printf("valuer de a [%i]\n", (*(int*)a_add));
//printf("valeur de b [%i]\n", (*(int*)b_add));
//printf("valeur de see [%i]\n", (*(int*)see));
free(temp);
}
void quicksort(void *tab, size_t nb_elem, size_t size_elem,\
int(*diff)(void const *a, void const *b))
{
g_nb_elem = nb_elem;
g_size_elem = size_elem;
swap(tab, 1, 2);
}
int main(void)
{
int i = 0;
int *tab;
tab = malloc(sizeof(int) * 10);
tab[0] = 0;
tab[1] = 1;
tab[2] = 2;
tab[3] = 3;
tab[4] = 4;
quicksort(tab, 5, sizeof(int), &diff);
while (i != 5)
{
printf("[%i] ", tab[i]);
i++;
}
free(tab);
return (0);
} |
Partager