Алгоритм отладки, объединяющий два списка, уже отсортированных с использованием циклических сдвигов.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Алгоритм отладки, объединяющий два списка, уже отсортированных с использованием циклических сдвигов.

Сообщение Anonymous »

Не могли бы вы помочь мне с отладкой этого кода C++, включающего алгоритм слияния, описанный ниже? Я подозреваю, что указатели индексов вызывают ошибку. Ниже приведен абзац с необходимыми спецификациями.
Спецификации назначения:
Следующая задача требует объединить два списка (x1, ... , xm) и (x_(m +1), ..., x_n), которые уже отсортированы, в отсортированный список (x_l, ..., x_n). Пусть s = Floor(sqrt(n)). Предположим, что в одном из этих списков меньше s записей и первый список короче второго. Нас просят написать функцию, объединяющую два отсортированных списка. Эта функция слияния должна использовать функцию roundShiftRight(), которая сдвигает записи по кругу вправо на p позиций. Если в первом списке меньше s элементов, то мы должны найти позицию q в объединенном списке первого элемента первого списка. Затем мы должны выполнить круговой сдвиг на q - 1 позицию, используя функцию roundShiftRight(). В этом циклическом сдвиге участвуют только записи первого списка и первые q — 1 записи второго. После циклического сдвига первые q записей оказываются в своих окончательных объединенных позициях. Повторите этот процесс для второго, третьего и остальных элементов исходного первого списка.
Это MRE ниже:

Код: Выделить всё

#include 
#include 

class Element {
public:
int getKey() const { return key; }
void setKey(int k) { key = k; }
Element(int k = 0) : key(k) {}
private:
int key;
};

void reverseSegment(Element* arr, int start, int end) {
while (start < end) {
int tempKey = arr[start].getKey();
arr[start].setKey(arr[end].getKey());
arr[end].setKey(tempKey);
start++;
end--;
}
}

void circularShiftRight(Element* arr, int n, int p) {
if (n 

Подробнее здесь: [url]https://stackoverflow.com/questions/79221622/debugging-algorithm-that-merges-two-lists-that-are-already-sorted-using-circular[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»