找不到我的 0 1 2 排序代码错误?分段故障

Can't find error with my code for sort 0 1 2? Segmentation fault

你能告诉我我的代码有什么问题吗?我遇到了这个特定输入(以及更多)的分段错误,但很少 运行 没问题?
我缺少什么?

void sortArr(int a[], int n)
{
    int x,y;
    for(int i=0;i<n;i++)
    {
        if(a[i]==0)
        {
            x++;
        }
        else if(a[i]==1)
        {
            y++;
        }
    }
    int i;
    for(i=0;i<x;i++)
    {
        a[i]=0;
    }
    for(i=x;i<(x+y);i++)
    {
        a[i]=1;
    }
    for(i=(x+y);i<n;i++)
    {
        a[i]=2;
    }
    // Print the sorted array
    printArr(a, n);
}

 
// Driver code
int main()
{
    int arr[] = {0,2,1,2,0,2,2,0,0,1};
    int n = sizeof(arr) / sizeof(int);
 
    sortArr(arr, n);
 
    return 0;
}

在使用之前初始化您的变量:

int x = 0, y = 0;

如果您不初始化变量,那么它们将具有不确定的值,这可能会导致未定义的行为,并且在某些情况下,这还会导致错误。 (以 MSVC 为例)