我正在尝试进行冒泡排序?在我的代码中,我已经对我的数组进行了一次部分排序。我想再次执行此步骤以对我的数组进行排序,然后退出程序。
#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;
}
答案 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;
}
}
}