C 分区代码中的错误是什么?
下面的代码适用于数组{4 5 3 7 2},但不适用于HackerRank站点上给出的其他测试用例。我的代码中有什么错误? 在将两个数组a1[]和a2[]合并到ar[]中时,我是否做错了什么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=
#包括
#包括
#包括
#包括
#包括
空分区(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];
}