Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Sorting - Fatal编程技术网

C 数组排序中的逻辑错误

C 数组排序中的逻辑错误,c,arrays,sorting,C,Arrays,Sorting,问题-对数组进行排序,使大于第一个元素的数字在右侧,小于第一个元素的数字在左侧 样本输入- 5 45372(以4为参考) 样本输出 32457 我的代码是这样排序的 输入 5 12162356 输出232356 int main() { int i,j,n,temp; printf("enter no of elements of array"); scanf("%d",&n); int a[n]; printf("enter array\n");

问题-
对数组进行排序,使大于第一个元素的数字在右侧,小于第一个元素的数字在左侧
样本输入-
5
45372(以4为参考)
样本输出
32457
我的代码是这样排序的
输入
5
12
16
2
3
56
输出
2
3
2
3
56

int main()
{

   int i,j,n,temp;
   printf("enter no of elements of array");
   scanf("%d",&n);
   int a[n];
   printf("enter array\n");
     for(i=0;i<=n-1;i++)
     {
     scanf("%d",&a[i]);
     }
   j=0;
   for(i=1;i<=n-1;i++)
   {
   if(a[i]<a[j])
     {
     temp=a[j];
     a[j]=a[i];
     a[i]=a[j];
     j++;
     }
   }
  for(i=0;i<n;i++)
  {
  printf("Array is%d\n",a[i]);
  }
}
intmain()
{
内部i、j、n、温度;
printf(“输入数组元素的编号”);
scanf(“%d”和“&n”);
int a[n];
printf(“输入数组\n”);
对于(i=0;i首先

 temp=a[j];
 a[j]=a[i];
 a[i]=a[j];
应该是

 temp=a[j];
 a[j]=a[i];
 a[i]=temp;
这就解释了重复的原因。但一旦你把它分类(哈哈),你会发现它不太正确,因为你只会将每个数字与其相邻的数字进行比较-如果数组中的最后一个数字是最小的呢?-你只会将它提前移到一个位置(例如,5个数字列表中的第4个位置)。

首先

 temp=a[j];
 a[j]=a[i];
 a[i]=a[j];
应该是

 temp=a[j];
 a[j]=a[i];
 a[i]=temp;
这就解释了重复的原因。但是,一旦你把它分类(哈哈),你会发现它不太正确,因为你只将每个数字与其相邻的数字进行比较-如果数组中的最后一个数字是最小的呢?-你只会将它提前移到一个位置(例如,5个数字列表中的第四个位置)。

for(i=1;i
for(i=1;i
j=0;
对于(i=1;i
j=0;

对于(i=1;i同样,在您的程序中有一个
可变长度数组,它在标准C中无效。

printf("enter no of elements of array");
scanf("%d",&n);
int a[n];
它可能会工作,但如果尝试初始化为任何值或零,则可能会遇到以下错误

[Error] variable-sized object may not be initialized  
这里对于
a[n]
来说,内存将在堆栈上分配,这对于大型应用程序来说不是很好。 只能使用常量定义数组的长度。(例如)
int a[10];

此外,在您的程序中有一个
可变长度数组,它在标准C中无效。

printf("enter no of elements of array");
scanf("%d",&n);
int a[n];
它可能会工作,但如果尝试初始化为任何值或零,则可能会遇到以下错误

[Error] variable-sized object may not be initialized  
这里对于
a[n]
来说,内存将在堆栈上分配,这对于大型应用程序来说不是很好。 只能使用常量定义数组的长度。(例如)
int a[10];

问题出在哪里?你忘了问问题了。欢迎来到StackOverflow。你可能想阅读以下内容:。你想让你的输出像你的示例输出一样吗?编辑你的问题并写出来。另外,“引用数组的第一个元素”有什么作用意思是?你应该使用指针遍历数组吗?有什么问题吗?你忘了问这个问题..欢迎来到StackOverflow。你可能想阅读以下内容:。你希望你的输出像你的示例输出一样吗?编辑你的问题并写出来。另外,“引用数组的第一个元素”有什么意义是什么意思?你应该用指针遍历数组吗?