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

0 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();
}
Run Code Online (Sandbox Code Playgroud)

Pio*_*zmo 6

您应始终复制粘贴代码.您提供的代码有一些拼写错误,甚至不会编译.

忽略拼写错误有三个主要问题:

  1. int i[3]只有3个元素.i[3]超出范围并访问它可能会导致意外的结果.

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

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