冒泡使用C ++排序

时间:2018-03-03 17:08:15

标签: c++ bubble-sort

我试图对数组中的值进行冒泡排序" A"使用c ++,但得到错误说变量A周围的堆栈已损坏?

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int A[] = {5,7,8,2,4,3};

    for (int i = 1; i <= 7 - 1; i++)
    {
        for (int j = 7; j >= i + 1; j--)
        {
            if (A[j] < A[j - 1])
            {
                swap(A[j], A[j - 1]);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

  

我正在尝试...对数组中的值进行排序&#34; A&#34; ...使用C ++

在这里,我会为你排序:

2, 3, 4, 5, 7, 8
(叹气)phew,这是一些艰苦的工作!但至少现在你不需要为使用C ++而烦恼。



什么,不够好?哦,你真的想用C ++ ?好的......你走了:

#include <array>
#include <algorithm>

int main()
{
    auto A = make_array(5,7,8,2,4,3);
    std::sort(std::begin(A), std::end(A));
}

make_array函数取自here;你也有std::experimental::make_array(),但那还没有标准化。

请注意,这不会使用气泡排序;但那么 - 你为什么要冒泡?随着阵列大小的增加,效率非常低......你可能想看看this comparison of sort algorithms(也有整齐的动画)。

答案 1 :(得分:1)

由于您没有使用任何字符串,因此您不需要#include字符串。你的初始化&amp;条件错了。这是有效的代码:

我的代码:

    #include <iostream>

    using namespace std;

    int main()
    {
       int A[] = {5, 7, 8, 2, 4, 3};
       int j = 1;
       int tmp;

       for(int i = 0; i < 6; i++){
          for(j = 0; j < 6-i-1; j++){
              if(A[j] > A[j + 1]){
                  tmp = A[j];
                  A[j] = A[j + 1];
                  A[j + 1] = tmp;
              }

          }
       }

       cout << "The sorted data in order: " << endl;
       for(int i = 0; i < 6; i++){
          cout << A[i] << endl;
       }


      return 0;
    }