Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 分区代码中的错误是什么?_C_Quicksort_Partitioning - Fatal编程技术网

C 分区代码中的错误是什么?

C 分区代码中的错误是什么?,c,quicksort,partitioning,C,Quicksort,Partitioning,下面的代码适用于数组{4 5 3 7 2},但不适用于HackerRank站点上给出的其他测试用例。我的代码中有什么错误? 在将两个数组a1[]和a2[]合并到ar[]中时,我是否做错了什么 #包括 #包括 #包括 #包括 #包括 空分区(int ar_size,int*ar){ int a1[100],a2[100]; int p=ar[0]; int i=0,j=0,k=0; 对于(i=0;i=p){ a2[k]=ar[i]; k++; } } i=0,j=0,k=

下面的代码适用于数组{4 5 3 7 2},但不适用于HackerRank站点上给出的其他测试用例。我的代码中有什么错误? 在将两个数组a1[]和a2[]合并到ar[]中时,我是否做错了什么

#包括
#包括
#包括
#包括
#包括
空分区(int ar_size,int*ar){
int a1[100],a2[100];
int p=ar[0];
int i=0,j=0,k=0;
对于(i=0;i=p){
a2[k]=ar[i];
k++;
}            
}
i=0,j=0,k=0;
而(a1[i]){
ar[i]=a1[j];
i++;
j++;
}
while(a2[k]){
ar[i]=a2[k];
i++;
k++;
}
对于(i=0;i
当初始化变量或数组时,不能用未知数字初始化数组。你应该知道需要多少(如果不知道需要的大小,只需用一个大数字初始化数组或使用链表)

因为电脑或其他什么东西应该知道他将在内存中分配多少。

删除i=0、j=0、k=0;以及下面的内容,然后尝试以下操作

while(k--){
    ar[k+j] = a2[k];
}
while(j--){
    ar[j] = a1[j];
}

你自己试过用不同的测试用例来运行它吗?我试过很多用例。它给出了不同而尴尬的结果。它给出了数组{4 5 3 7 2}的正确答案。元素数
1≤N≤1000
int a1[100],a2[100];
未初始化。而(a)什么是a?a是未定义的主函数没有问题。它是在HackerRank的代码编辑器中编写的默认代码。什么
ar1
ar2
包含?如果它们不包含任何内容,您如何将值赋给另一个数组?如果使用
c90
您将得到
错误:ISO c90禁止可变长度数组
使用
gcc-std=c90-pedantic-Wall-Werror-oss.c
但是
c99
使用
gcc-std=c99-pedantic-Wall-Werror-oss.c
 int _ar_size;
scanf("%d", &_ar_size);
int _ar[_ar_size], _ar_i;
while(k--){
    ar[k+j] = a2[k];
}
while(j--){
    ar[j] = a1[j];
}