C言語でのソートプログラムが Segmentation fault になる
#include <stdio.h>
#include <stdlib.h>
#define MAX_A 10
#define MAX_B 100
void quickSort(int (*E)[MAX_B]);
void q_sort(int *E, int left, int right);
int main(void) {
int i, j;
int E[MAX_A][MAX_B];
for(i = 0; i < MAX_A; i++) {
for(j = 0; j < MAX_B; j++) {
E[i][j] = rand() % MAX_B;
}
}
quickSort(E);
for(i = 0; i < MAX_A; i++) {
for(j = 0; j < MAX_B; j++) {
printf("%d\t", E[i][j]);
}
printf("\n");
}
return 0;
}
void quickSort(int (*E)[MAX_B]) {
int i;
for(i = 0; i < MAX_B; i++) {
q_sort(E[i], 0, MAX_B - 1);
}
}
void q_sort(int* E, int left, int right) {
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = E[left];
while(left < right) {
while((E[right] >= pivot) && (left < right)) {
right--;
}
if(left != right) {
E[left] = E[right];
left++;
}
while((E[left] <= pivot) && (left < right)) {
left++;
}
if(left != right) {
E[right] = E[left];
right--;
}
}
E[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if(left < pivot) {
q_sort(E, left, pivot-1);
}
if(right > pivot) {
q_sort(E, pivot+1, right);
}
}
C言語でソートを行うプログラムを書いたのですが, Segmentation faultになってしまいます.
どこが間違っているのでしょうか?
出力例 :
1 2 3 3 5 5 6 6 7 9
0 0 2 2 3 6 6 6 7 9
0 1 2 2 3 5 7 7 8 9
1 2 2 2 3 6 7 8 9 9
0 1 3 4 4 5 7 8 9 9
0 0 1 1 2 3 3 6 6 6
3 4 5 5 5 6 6 7 7 9
0 2 3 4 4 4 4 5 5 7
1 3 4 4 6 7 8 8 8 9
0 2 2 4 6 6 6 8 9 9