c – 我的泡泡分拣计划中的错误是什么?

前端之家收集整理的这篇文章主要介绍了c – 我的泡泡分拣计划中的错误是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经一次又一次检查代码中的任何问题,但无法弄清楚为什么我的气泡分拣程序没有给出正确的输出.你能帮我识别一下吗?
#include <iostream.h>
#include <conio.h>

 using namespace std;

 main()

{
  int number[10];
  int temp=0;
  int i=0;

  cout<<"Please enter any ten numbers to sort one by one: "<<"\n";

  for (i=0;i<10;i++)
  {
      cin>>number[i];
      }
  i=0;

  for (i=0;i<10;i++)
  {

      if(number[i]>number[i+1])

      {
      temp=number[i+1];
      number[i+1]=number[i];
      number[i]=temp;
                          }

      }
      i=0;
      cout<<"The sorted numbers are given below:"<<"\n";

      for (i=0;i<10;i++)
      {
        cout<<number[i]<<"\n";  
          }

          getch();
  }

编辑:
我已经接受了你们所说的必须有一个外环.但我又在想我写的东西.我认为具有气泡条件的ONLY循环应该进行排序.这是我在想的:

for (i=0;i<10;i++)
    if(number[i]>number[i+1])
    {
        temp=number[i+1];
        number[i+1]=number[i];
        number[i]=temp;

    }
}

现在我解释一下我在想什么这个循环“应该”做什么.它首先将数字[0]与数字[1]进行比较.如果条件满足,它将执行IF语句的正文.然后我将增加1(i).然后在下一次迭代中,比较的值将是数字[1]和数字[2].那么为什么它不会发生并且循环仅在通过后退出?换句话说,可能是我试图要求IF语句不会在for循环中重复?在我看来它确实如此.我非常感谢你的帮助和观点,我的问题可能很小,但这就是我的进步方式.谢谢.

解决方法

>您只运行一次bubble循环 – 您应该运行它直到所有内容都已排序
>您的气泡循环变为十,访问数字[i 1],这是一种未定义的行为

以下是修复主循环的方法

bool again;
do {
    again = false;
    for (i=0;i<9;i++)
    { //       ^-- Nine,not ten
        if(number[i]>number[i+1])
        {
            temp=number[i+1];
            number[i+1]=number[i];
            number[i]=temp;
            again = true;
        }
    }
} while (again);
原文链接:https://www.f2er.com/c/110281.html

猜你在找的C&C++相关文章