У меня есть что-то странное.Я хотел бы отсортировать множество шахматных элементов по цвету на шахматной доске.Это довольно просто (см. Прилагаемый код), поэтому, если x% 2 == y% 2 верно, тогда он черный, если не белый.Но это не проблема.У меня есть один элемент в начале массива, который немного отличается (нужно это для некоторых вычислений позже) и должен оставаться там, где он есть.
Можно ли отсортировать массив, не касаясьпервый элемент?
int compareColour(const void * fs1, const void * fs2) {
Field *orderA = (Field *)fs1;
Field *orderB = (Field *)fs2;
bool isBlackB = ((orderA->x%2)==(orderA->y%2));
bool isBlackA = ((orderB->x%2)==(orderB->y%2));
return (isBlackB - isBlackA);
}
void sortByColour() {
qsort(fieldArr,(size_t) countFields, sizeof(Field), compareColour);
}