我怎么能重复我的泡泡排序呢?

时间:2017-12-03 23:14:25

标签: c++ algorithm sorting search

我正在尝试进行冒泡排序?在我的代码中,我已经对我的数组进行了一次部分排序。我想再次执行此步骤以对我的数组进行排序,然后退出程序。

#include <iostream>
using namespace std;

int main() {

    int n;
    cin>>n;
    int A[n];
    for(int i=0;i<n;i++)
    {
        cin>>A[i];
    }

    for(int i=0;i<n;i++)
    {
        cout<<A[i];
    }

    cout<<endl;

    //repet:;

    for(int i=0;i<n;i++)
    {
        while(A[i]>A[i+1])
        {
        int temp;
            temp = A[i+1];
            A[i+1] = A[i];
            A[i] = temp;
        }

        for(int i=0;i<n;i++)
            {
                cout<<A[i];
            }
        cout<<endl;

    }
    //goto repet;

    return 0;
}

2 个答案:

答案 0 :(得分:0)

我已经使用了另一个循环和一个布尔变量swapped来检查这个迭代是否有任何变化。

bool swapped;
do {
    swapped = false;
    for(int i=0;i<n;i++)
    {
        while(A[i]>A[i+1])
        {
            int temp;
            temp = A[i+1];
            A[i+1] = A[i];
            A[i] = temp;
            swapped = true;
        }
    }

    for(int i=0;i<n;i++)
    {
        cout<<A[i] << " " ;
    }
    cout<<endl;
} while (swapped);

您可以在wiki中查看一些优化。

答案 1 :(得分:0)

以下是您需要的代码更改:

for(i = 1; (i <= numLength); i++)
{
     flag = 0;
     for (j=0; j < (numLength -1); j++)
     {
          if (num[j+1] > num[j])   

          { 
                temp = num[j];             // swaping elements
                num[j] = num[j+1];
                num[j+1] = temp;

           }
      }
}
相关问题