Добрый день люди добрые!
Пишу программ на си используя gcc в убунте. В программе реализовал сортировку на основе алгоритма двухпутевого слияния. Программа компилируется отлично, без сучка без задоринки, но при запуске отображается ошибка: ошибка сегментирования. Ругается на место с указателем. Вот алгоритм сортировки. Подскажите пожалуйста в какую сторону копать, и может быть что Ubuntu защищает память от изменения в этом случаи?
void qs(char *items, int left, int right)
{
register int i, j;
char x, y;
i = left; j = right;
x = items[(left+right)/2]; /* выбор компаранда */
do {
while((items[i] < x) && (i < right)) i++;//1
while((x < items[j]) && (j > left)) j--;//3
if(i <= j) {
y = items[i];
items[i] = items[j]; // в этом самом месте ошибка!
items[j] = y; // здесь то же самое
i++; j--;
}
} while(i <= j);
if(left < j) qs(items, left, j);
if(i < right) qs(items, i, right);
printf("%s \n",items);
}
qs("fedacb", 0, 5);