冒泡排序由于复杂度很高,有 O(N 2 ),所以我一直感觉有些中看不中用,,真正做题需要排序的时候是不会用冒泡排序的,但!它的算法实现蛮有意思,还是要知道人家是怎么做的!
首先,冒泡的核心为:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。
假设有n个数需要从高到低排列,从第一个数开始比较,一次能把它给固定住,所以想固定好所有的数需要n-1次,这是一个循环,那对于每一个数该怎么固定呢,只要比他后面那一位小,就交换位置,所以里面也存在一个循环;即实现冒泡需要双重循环。
#include<iostream>
using namespace std;
int main()
{
int a[1003],n,m,i,j;
cin>>n; //输入有几个数
for(i=1;i<=n;i++)
cin>>a[i];
//冒泡的核心
for(i=1;i<=n-1;i++) //要进行n+1趟
{
for(j=1;j<=n-i;j++)
{
if(a[j]<a[j+1])
{
m=a[j];a[j]=a[j+1];a[j+1]=m;
}
}
}
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}