第一种:交换排序
void bubbleSort(vector<int>s){
for(int i=0;i<s.size()-1;i++){
for(int j=i+1;j<s.size();j++){
if(s[i]>s[j]){
swap(s[i],s[j]);
}}}}
第二种:冒泡排序
void bubbleSort(vector<int>s){
for(int i=0;i<s.size()-1;i++){
for(int j=s.size()-1;j>i;j--){
if(s[i]>s[j]){
swap(s[i],s[j]);
}}}}
第三种:冒泡排序优化
void bubbleSort(vector<int>s){
for(int i=0;i<s.size()-1;i++){
int flag=0;
for(int j=s.size()-1;j>i;j--){
if(s[i]>s[j]){
swap(s[i],s[j]);
flag=1;
}}
if(flag==0)
break;
}}
时间复杂度分析:
最好情况:排序表本身有序,只需要n-1次比较,无需交换,时间复杂度为O(n)
最坏情况:排序表逆序,需要比较 次,并做等数量级的移动,因此时间复杂度为O(n^2)。