Итак, у меня есть массив структур с месяцами и днями на нем, и я хочу отсортировать его так, чтобы первая структура провела день 1 месяца 1, второй день 2 месяца 1 и так далее.Сортировка длинного массива структур
Я пытаюсь сделать это, сохранив правильный массив во временном массиве и затем заменив его.
Моя проблема заключается в том, чтобы сделать следующее, единственный алгоритм, который я мог сделать, разбивает мое приглашение и дает мне ошибку segmetation. К настоящему времени я слишком смущен, чтобы не знать, ошибочна ли моя логика, или я делаю это слишком сложно, чтобы программа работала.
Вот функция с моей трески
void sortData(struct StructData data[], int size){
int i=0,x=0,z=0,v_day=0,v2_day=0;
struct StructData temp[sz];
for (i=0;i!=12;i++){
for (x=0;x!=12;x++){
if (data[x].month == i+1){
for (v=0;v!=31;v++){
for(v2=0;v2!=31;v2++){
if (data[v2].day == v+1){
temporal[z] = data[v2];
z=z+1;
}
}
}
}
}
}
i=0;
for (i=0;i!=size;i++){
data[i] = temporal[i];
}
}
Существует, вероятно, лучший способ сделать это, я просто не вижу.
Попробуйте возиться с qsort: http://stackoverflow.com/questions/1787996/c-library-function-to-do-sort – Phyreprooph
Segfault здесь, вероятно, связано с отсутствием индексов связанных массивов. Используйте отладчик, который скажет вам, где именно происходит segfault. Если вы не знаете, как использовать отладчик, тогда пришло время начать изучать его сейчас. Покажите больше кода, если вы хотите получить больше ответов. –
@Phyreprooph Я, хотя так, но как я мог бы отсортировать всю структуру по этому правилу? Я не хочу сортировать только дни. Мне нужна вся структура, отсортированная по мере того, как она хранит данные того конкретного дня. – hydrz