c - Turbo C 在执行 C 冒泡排序程序时挂起

标签 c sorting

我编写了一个 C 程序来执行冒泡排序,但在执行它时 IDE 挂起。 为什么会这样?代码如下:

 #include<stdio.h>
    main()
    {
          int i[3],temp,n,x;
          printf("Enter 4 positive numbers");
          for(n=0;n<=3;n++)
          {
                scanf("%d",&i[n]);
          }
          recheck:
          for(x=0;x<=2;x++)
          {
                if(id[x]>i[x+])
                {
                temp=i[x];
                i[x]=i[x+1];
                i[x+1]=temp;
                }
          }
          if(i[0]>i[1]&&i[1]>i[2]&&i[2]>i[3])
          {
                for(n=0;n<=3;n++)
                {
                      printf("%d",i[n]);
                 }
          }
          else
          {
                 goto recheck;
           }
           getche();
}

最佳答案

您应该始终复制粘贴您的代码。您提供的代码有一些拼写错误,甚至无法编译。

忽略拼写错误,存在三个主要问题:

  1. int i[3] 只有 3 个元素。 i[3] 越界,访问它可能会导致意外结果。

  2. 当交换元素时,您按升序排序,但当检查数组是否完全排序时,您使用降序。

  3. 您正在使用严格不等式来检查数组是否已排序。如果有两个相等的元素,这将不起作用。

关于c - Turbo C 在执行 C 冒泡排序程序时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020774/

相关文章:

c - 错误 : invalid operands to binary == (have 'struct demo' and 'struct demo' )

c - glDrawArrays 在启用颜色顶点数组 OpenGL ES 2.0 时崩溃

r - 如何按 R 中的自定义规则对字符串列表进行排序?

r - 使用 R 中的外部因素排序对数据框进行排序

javascript - Backbone.js 集合比较器按多个字段排序?

sql - 如何检查数据库的架构

c - 有没有办法获得具有 AVX 支持的 Tensorflow 的 C API?

c - 用 SWIG 包装 C 结构

javascript - 使用 es6 根据匹配和不匹配的值对数组进行排序

java - 如果 ArrayList 的已排序 Collection 扩展到超过其初始大小,它会变为未排序吗?