Почему крашится сортировка?
У вас пустой массив.
Никаких проверок на то, что массив пустой, и вы сразу пытаетесь обращаться к его элементам.
Дело даже не в том, что массив "неправильный"Program received signal SIGSEGV, Segmentation fault.  if (students[j].ResultMark > students[j + 1].ResultMark)
kentos,
А теперь возник вопросunsigned int StudentsCount = 0;
чему равно (StudentsCount - 1)?