希尔排序不正确的问题

问题遇到的现象和发生背景

在学习希尔排序

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 
#include

void swap (int *a, int *b)
{
    int tem;
    tem = *a;
    *a = *b;
    *b = tem;
}
void Shell_Sort (int a[], int n)//希尔排序,由小到大 
{
    int gap = 1;
    int i, j;
    
    while (gap < n/3)
    {
        gap = 3*gap + 1;//最大gap 
    }
    
    while (gap > 0)
    { 
        for (i = gap; i < n; ++i)
        {
            for (j = i - gap; j >= 0 && a[j] > a[i]; j -=gap)//如果比同一组的前一个大则交换位置 
            {
                swap (&a[i], &a[j]);
            }
        }
        
        gap = gap/3;
    }
    
 } 
int main ()
{
    system ("color f0");
    
    int a[6], i;
    
    for(i = 0; i < 6; i++)
    {
        scanf("%d", &a[i]);
    }
    
    Shell_Sort(a, 6);
    
    for(i = 0; i < 6; i++)
    {
        printf("a[%d] = %d\t", i, a[i]);
    }
    
    return 0;
}

运行结果及详细报错内容

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

没什么思路……

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

#include <stdio.h>
void group_sort(int a[], int n,int i,int gap) {
    int j;
    for (j = i + gap; j < n; j += gap) {
        // 如果a[j] < a[j-gap],则寻找a[j]位置,并将后面数据的位置都后移。
        if (a[j] < a[j - gap]) {
            int tmp = a[j];
            int k = j - gap;
            while (k >= 0 && a[k] > tmp) {
                a[k + gap] = a[k];
                k -= gap;
            }
            a[k + gap] = tmp;
        }
    }
}
void shell_sort(int a[], int n) {
    int i, gap;
    // gap为步长,每次减为原来的一半。
    for (gap = n / 2; gap > 0; gap /= 2) {
        // 共gap个数组,对每一组进行直接插入排序
        for (i = 0; i < gap; i++) {
            group_sort(a, n, i, gap);
        }
    }
}
int main() {
    int a[6], i;
    for(i = 0; i < 6; i++){
        scanf("%d", &a[i]);
    }
    shell_sort(a, 6);
    for (int i = 0; i < 6; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}