簡體   English   中英

使用 C++ 進行冒泡排序

[英]Bubble Sort using C++

我正在嘗試使用 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]);
            }
        }
    }
}

我正在嘗試……對數組“A”中的值進行排序……使用 C++

下面我來給大家整理一下:

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函數取自此處 你也有std::experimental::make_array() ,但這還沒有標准化。

請注意,這不會使用冒泡排序; 但是 - 你為什么要冒泡排序? 隨着數組大小的增加,它的效率非常低......您可能想查看排序算法的這種比較(也有簡潔的動畫)。

您不需要 #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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM