Sorry for annoying anyone here, but I'm having an issue with my merge sort code. Previously I could code the 2-way merge sort and when I tried to adapt my merge sort to be an 3-way merge sort my compiler gave me: 9154 segmentation fault(core dumped)
. Could you help me to fix this? there is my code:
#include <stdio.h>
void merge(int v[], int p, int q, int r) {
int i, j, k, b[10];
for (i = p; i <= q; i++) {
b[i] = v[i];
}
for (j = q + 1; j <= r; j++) {
b[r + q + 1 - j] = v[j];
}
i = p;
j = r;
for (k = p; k <= r; k++) {
if (b[i] <= b[j]) {
v[k] = b[i];
i++;
} else {
v[k] = b[j];
j--;
}
}
}
void mersort(int v[], int p, int r) { //2-way mergesort that works
int q;
if (p < r) {
q = (p + r) / 2;
mersort(v, p, q);
mersort(v, q + 1, r);
merge(v, p, q, r);
}
}
void mersort3(int v[], int p, int r) {//not working
int q, s;
if (r > p) {
q = p + (p + r) / 3;
s = p + 2 * ((p + r) / 3) + 1;
mersort3(v, p, q);
mersort3(v, q, s);
mersort3(v, s, r);
merge(v, p, q, s);
merge(v, p, s, r);
}
}