Mam tutaj samą funkcje ponieważ wiem że ona źle dziala , tzn. źle sortuje i wydaje mi się że mam tutaj jakiś błąd przy zamianie (memcpy). Funkcja ta miała byc insertsortem ale z argumentami jak dla qsort .Funkcja ta dostaje rozmiar oraz teksty/daty ktore ma posortowac.
#include"sort.h"
#include <stdlib.h>
#include <string.h>
void insertsort (void **inputTab, int sizeOfTab, int sizeOfObject,int (*compar) (const void *, const void *), void (print)(void *)) {
printf("insert sort start:\n");
unsigned char *ptr = inputTab;
unsigned char tmp[256];
(*print)(ptr);
int j;
if(sizeOfTab < 2 || sizeOfObject == 0)
return;
for (int i = 1; i < sizeOfTab; i++) {
memcpy(tmp,ptr + sizeOfObject * (i), sizeOfObject);
//temp=inputTab[i];
j=i-1;
int result= (*compar)((ptr + sizeOfObject * j),(tmp));
while(j>=0 && result>0){
memcpy((ptr + sizeOfObject*(j+1)),(ptr + sizeOfObject*(j)), sizeOfObject);
printf("1 wartosc ; %s",(ptr + sizeOfObject*(j+1)));
//inputTab[j+1]=inputTab[j];
j=j-1;
}
memcpy(ptr + sizeOfObject*(j+1),tmp, sizeOfObject);
//inputTab[j+1]=temp;
}
}