排序有很多种方法,但简洁高效的算法更可以检验我们的技术水平,下面这段代码是C++中的高效的冒泡排序方法,定义了flag,来判断排序是否已经有序,这样可以提前结束运行,减少时间。
例如,2 6 4 1 8,冒泡排序从第一个数字2开始,一次比较6 4 1 8,结果为 2 4 1 6 8接着从比较完之后的第二个数字开始 4开始比较4 1,而不去标胶8,因为通过第一次比较知道8已经是最大的了,所以便不用去比较8了。而且在第二次比较之后知道6是最大的了,从而下次比较就不需要在比较6了,通过这样就减少了比较次数,也节省了运行时间,提高了运行效率。
#include <stdio.h>
#include <stdlib.h>
#include<iostream>
using namespace std;
int main()
{
int a[7];
for(int i=0;i<5;i++)
{
cin>>a[i];
}
int j=1;
int temp=1;
int flag=1;
for(int i=1;i<5&&flag;i++)
{
flag=0;
for(int j=0;j<5-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=1;
}
}
}
for(int i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
}