qsort структуры на основе сортировки одного элемента

Мне нужно знать, как использовать qsort для сортировки структур на основе только одного поля в структуре.

для например.

struct abc {
    double* field;
    int* class;    
}

Каждое поле имеет соответствующий класс, т.е. класс, связанный с полем [i], является классом [i]. Мне нужно отсортировать поле double* в порядке возрастания и в то же время присвоить каждому полю исходные значения класса.


person PeteBeat    schedule 16.04.2014    source источник
comment
Классы на С? Вместо того, чтобы сравнивать объекты (структуры), сравнивайте их элементы - в данном случае - поля.   -  person Kamiccolo    schedule 16.04.2014
comment
@Pranav, вы имеете в виду сортировку списка структур abc?   -  person rw.liang1    schedule 16.04.2014
comment
Как определить количество элементов в field и class?   -  person chux - Reinstate Monica    schedule 16.04.2014
comment
@Kamiccolo Классов нет. Имя моего int* - это класс. liangricha Да, я хочу отсортировать столбец в порядке возрастания поля. Но поскольку каждое поле имеет соответствующее значение класса, мне нужно отсортировать и это значение.   -  person PeteBeat    schedule 17.04.2014
comment
Это изоморфно дубликату — дубликат должен сортировать 4 параллельных массива, тогда как он сортирует только 2 (но все 4 массива одного типа, а не 2 разных типа, как здесь). Однако принципы те же. Вы не можете использовать стандартный C qsort(), если вы не преобразуете данные из структуры, содержащей массивы, в массив структур и не используете предварительную обработку O (N) для преобразования в массив структур и постобработку O (N) для преобразования обратно в структуру, содержащую массивы. Также требуется в два раза больше места для хранения. Альтернативой является пользовательский код сортировки, который управляет заменой нескольких массивов.   -  person Jonathan Leffler    schedule 02.09.2019