首页 > 解决方案 > 如何在 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

标签: c++bubble-sort

解决方案


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

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

现在正确的答案将是形式

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

推荐阅读