merge, merge sort

276
23 октября 2021, 23:50

Я пытаюсь написать сортировку слиянием, но программа падает. Поэтому решила для начала проверить правильно ли работает функция merge, но она работает нормально.

vector<int> merge(vector<int>& b, vector<int>& c){
size_t nb = b.size();
size_t nc = c.size();
int i = 0;
int j = 0;
vector<int> d;
while(i <= nb && j <= nc){
    if (b[i] <= c[j]){
        d.push_back(b[i]);
        i++;
    } else {
        d.push_back(c[j]);
        j++;
    }
}
while (i < nb){
    d.push_back(b[i]);
    i++;
}
while (j < nc){
    d.push_back(c[j]);
    j++;
}
return d;}

Вот сама функция merge_sort:

vector<int> merge_sort(vector<int>& a, int left, int right){
vector<int> res;
if (left < right){
    int m = right / 2;
    vector<int> b, c;
    b = merge_sort(a, left, m - 1);
    c = merge_sort(a, m, right);
    res = merge(b, c);
}
return res;}

С чем может быть связана проблема? Я подозреваю, что проблема где-то в условии

if (left < right)

В main вызываю merge_sort(a, 0, n), где n размер массива a.

Answer 1
vector<int> merge_sort(vector<int>& a, int left, int right){
vector<int> res;
if (left < right){
    //int m = right / 2;
    int m = (left + right) / 2;
    vector<int> b, c;
    //b = merge_sort(a, 0, m - 1);
    b = merge_sort(a, left, m );
    //c = merge_sort(a, m, right);
    c = merge_sort(a, m + 1, right);
    res = merge(b, c);
}
else res .push_back( a[left] );
return res;}
READ ALSO
VTK. Получение значения Z по X и Y из polydata

VTK. Получение значения Z по X и Y из polydata

У меня есть некоторый набор точек, который проходит через vtkDelaunay2D (триангуляцию) и vtkSmoothPolyDataFilter (сглаживание), соответственно, получается...

175
перегрузка оператора ()(int,int)

перегрузка оператора ()(int,int)

для класса String требуется перегрузить несколько операторов,возник вопрос с перегрузкой оператора ()(int,int) -возвращение подстроки объектаКак...

191
Как открыть дизайнер формы в проекте Windows Application C++?

Как открыть дизайнер формы в проекте Windows Application C++?

Всем приветВ общем, создал проект Windows Application С++

174
Ошибка Segmentation fault

Ошибка Segmentation fault

Вылетает в этой фукции:

246