深度解析冒泡排序
排序算法是任何语言中都很重要的算法,而排序算法也是多种多样的。不同的排序算法都有自己不同的特点。今天,就让我们一起看看冒泡排序算法。
说到冒泡排序算法,很多人的第一反应是:
其实差不多,你可以把一个数想象成1个泡泡,冒泡排序就是把越小(最大)的泡泡浮到越上面(排到更前面)
冒泡排序的工作原理是:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡排序的时间复杂度是O(n²),所以在对很多数字排序是不宜用冒泡排序。
从小到大排代码(这里的代码只能排10个,各位兄嘚需要自己改一下):
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[10]; //定义数组a,包含10个整形变量,代表输入的十个数
for(int i=0;i<10;i++){ //枚举i,从0到9,共10次
cin>>a[i]; //输入a的i号元素
}
for(int i=9;i>=1;i--){ //枚举i,从9到1,共9次
for(int j=0;j<=i-1;j++){ //枚举j,从0到i-1
if(a[j]<a[j+1]){ //如果左边的数小于右边的数
swap(a[j],a[j+1]); //交换两个数的位置
}
}
}
for(int i=0;i<10;i++){ //枚举i,从0到9,共10次
cout<<a[i]<<" "; //输出a的i号元素,并输出空格
}
return 0;
}
从大到小排代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[10]; //定义数组a,包含10个整形变量,代表输入的十个数
for(int i=0;i<10;i++){ //枚举i,从0到9,共10次
cin>>a[i]; //输入a的i号元素
}
for(int i=9;i>=1;i--){ //枚举i,从9到1,共9次
for(int j=0;j<=i-1;j++){ //枚举j,从0到i-1
if(a[j]<a[j+1]){ //如果左边的数小于右边的数
swap(a[j],a[j+1]); //交换两个数的位置
}
}
}
for(int i=0;i<10;i++){ //枚举i,从0到9,共10次
cout<<a[i]<<" "; //输出a的i号元素,并输出空格
}
return 0;
}