Сортировка Шелла на Си
Пытаюсь реализовать сортировку Шелла с шагами 3,2,1:
int shellSort(char *arr, int count){
     char temp;
     int i,j,k;
     for(i=3;i>0;i--){
         for(j=i;j<count;j++){
             for(k=j;k>=0 && arr[k]<arr[k-i];k=k-i){
                 temp = arr[k];
                 arr[k] = arr[k-i];
                 arr[k-i] = temp;
             }
         }
     }
     return 0;
}
Передаю массив:
char test[10] = {'f','g','r','d','v','s','a','t','e','g'};
shellSort(test,10);
Как итог получаю левое значение и не пойму откуда оно взялось:
В программе сразу же появляется буква 'u', причем если убрать k=k-i она исчезает.
Ошибку нашел, выход за границы массива:
for(k=j;(k-i)>=0 && arr[k]<arr[k-i];k=k-i){