如何在 C++ 中对数组进行冒泡排序?

How do you do a Bubble Sort for an Array in C++?

我得到了 4 个数字,我必须输入它们并使用冒泡排序将它们从低到高排序。 这是我目前用于冒泡排序的内容:

void bubble_sort()
{
    for (int i=0;i<4;i++)
    {
        if(num[i]>num[i+1])
        {
            float temp;
            temp=num[i+1];
            num[i]=num[i+1];
            num[i+1]=temp;
        }
    }
}

当我使用以下输入输出数组时:3.72、3.92、3.46 和 3.86 我得到:3.72、3.46、3.46、0

代码中出现的一些错误如下

  1. 以错误的方式交换值。 (正如问题的评论中所指出的)
  2. j 的值为 3 在这种情况下,当 temp = num[j+1] 为 运行 时它将在索引 4 中拾取垃圾值。
  3. 只有一个 for 循环,循环只迭代一次。请仔细阅读冒泡排序的工作基础和复杂性,以及它如何使用来自 here
  4. 的至少两个循环

现在正确答案的形式是

    void bubble_sort(float num[]) {
    for (int i=0;i<4;i++) {
        for(int j=0;j<3;j++){
            if(num[j]>num[j+1])
            {
                float temp;
                temp=num[j+1];
                num[j+1]=num[j];
                num[j]=temp;
            }
        }
      }
    for(int i=0;i<4;i++)
        cout<<num[i];
    }