代码中在第一层循环中增加一个bool值,是为了防止在排序完成后还继续无谓的比较,最多会有(n-1)*(n-2)/2次循环。
#include<iostream>
using namespace std;
void bumbleSort(int a[],int l)
{
for(int i = ;i<l;i++)
{
bool b = true; for(int j = ;j<l-i-;j++)
{ if(a[j]>a[j+])
{
if(b)
b = false;
int temp = a[j];
a[j] = a[j+];
a[j+] = temp;
} }
if(b)
break;
}
}
int main()
{
int a[] = {,-,,-,,};
for(int i = ;i<;i++)
cout<<a[i]<<" "; bumbleSort(a,);
for(int i = ;i<;i++)
cout<<a[i]<<" ";
cout<<endl;
}
改进的冒泡排序代码