hello,小伙伴们大家好,今天和大家比较一下冒泡和排序的排列方法:
首先对于冒泡排列,就像是气泡,将每一次的遍历出的最小值或最大值飘到上面:
#include<iostream>
using namespace std;
int main()
{
int i,j,n,a[100]={0},t;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i],a[i]=a[j],a[j]=t;
}
}
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
}
大家可以看到这会交换很多次,记住这一点会很影响效率,接下来看选排:
#include<iostream>
using namespace std;
int main()
{
int i,j,n,a[100]={0},t,k;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
t=a[i],a[i]=a[k],a[k]=t;
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
}
这里减少了许多的多次交换,当数组元素很多时会相对冒泡效率提高了很高