【问题标题】:Bubble Sort using C++使用 C++ 的冒泡排序
【发布时间】:2018-03-03 17:08:15
【问题描述】:

我正在尝试使用 c++ 对数组“A”中的值进行冒泡排序,但出现错误提示变量 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]);
            }
        }
    }
}

【问题讨论】:

标签: c++ bubble-sort


【解决方案1】:

我正在尝试......使用 C++ 对数组“A”中的值进行排序

这里,我给你整理一下:

2, 3, 4, 5, 7, 8

(叹气)唷,那是一项艰苦的工作!但至少现在你不需要为使用 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(也有简洁的动画)。

【讨论】:

    【解决方案2】:

    您不需要#include 字符串,因为您没有使用任何字符串。您的初始化和条件错误。这是有效的代码:

    我的代码:

        #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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-26
      • 2018-11-13
      • 2014-02-25
      • 2019-10-04
      • 2016-05-08
      • 2017-10-21
      相关资源
      最近更新 更多