void sort_insertion(int (*fn)(char*, char*)){
// сортировка вставками
const char *binary = "binary.bin";
FILE *fb = fopen(binary, "rb+");
fseek(fb, 0, SEEK_END);
int flen = ftell(fb) / sizeof(struct Route);
rewind(fb);
struct Route *far = (struct Route*)calloc(flen, sizeof(struct Route));
for(int i = 0; i < flen; ++i){
struct Route tmp;
fread(&tmp, sizeof(struct Route), 1, fb);
far[i] = tmp;
}
for(int i = 0; i < flen-1; ++i){
int iswap = i;
for(int j = i+1; j < flen; ++j){
if(fn(far[j].number, far[iswap].number) == 1) { iswap = j; }
}
if (iswap != i){
struct Route swap = far[iswap];
far[iswap] = far[i];
far[i] = swap;
}
}
for (int i = 0; i < flen; ++i){
printf("%s\n", far[i].number);
}
for(int i = 0; i < flen; ++i){
fwrite(&far[i], sizeof(struct Route), 1, fb);
}
free(far);
fclose(fb);
putchar('\n');
}
int lh(char* value1, char* value2){
if (strcmp(value1, value2) < 0) { return 1; }
else { return 0; }
}
int gh(char* value1, char* value2){
if (strcmp(value1, value2) > 0) { return 1; }
else { return 0; }
}