我该如何重复我的气泡排序它被执行

How can i repeat my bubble sort one it get executed?

本文关键字:排序 执行 气泡 我的 何重复      更新时间:2023-10-16

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

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

我已经使用了另一个循环和一个布尔var 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中检查一些优化。

这是您需要的代码更改:

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