Медианный алгоритм для 4 отсортированных массивов

Это гибкое действие неверно:

  yylval.id_v = yytext;

yytext указывает на внутренний рабочий буфер. Его содержимое будет меняться каждый раз, когда вызывается сканер. Поэтому, если вы хотите сохранить строку, которая составляет токен, вы должны скопировать строку в свое собственное хранилище, например, используя strdup. (Не забудьте освободить выделенное хранилище, когда закончите с ним.)

-2
задан Arik Shapiro 21 March 2019 в 22:58
поделиться

1 ответ

Я думаю, что вы придерживаетесь ключевой идеи: медианное значение всех значений в четырех массивах - это просто медиана всех значений, поэтому, если мы пройдем половину всех значений, то все, что будет дальше, будет медианой , Я хотел бы предложить структурирование следующим образом:

int firstIndex = 0;
int secondIndex = 0;
int thirdIndex = 0;
int fourthIndex = 0;
double current;

for (int i = 0; i < n/2; i++) {
    // 1.) Find the value out of the four at firstIndex, secondIndex, ...
    //     which is smallest, and assign it to current
    // 2.) Increment whichever of the four indices belongs to that element
}
// whatever is in current at the end of the loop is the middle element

Вы, вероятно, хотите функцию findMin(int index1, int index2, int index3, int index4). Этот метод также может отвечать за проверки за пределами границ, поэтому основной цикл может просто полагаться на него, чтобы он указывал в правильном направлении, и не заботиться о том, что в нем нет элементов в любом данном массиве.

Имеет ли это смысл? Я попытался оставить достаточно двусмысленности, чтобы позволить вам справиться с большей частью реальной работы по реализации:)

0
ответ дан MyStackRunnethOver 21 March 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: