【数据结构】双向冒泡排序算法
思路分析:其实就是将俩趟冒泡排序合并到了一趟,并且一次从后往前一次从前往后,王道书上给的是设置了一个low和high用来记录上限和下限,而这里使用的是di,效果是一样的。
#include<iostream>
using namespace std;
#include <vector>
vector<int>vt={40,38,46,79,56,84};
void dul_bubble(vector<int>& vt){
bool flag;
for(int di=0;di<vt.size();++di){
flag=false;
for(int i=di;i<vt.size()-1;++i){
if(vt[i]>vt[i+1]){
flag=true;
int temp=vt[i];
vt[i]=vt[i+1];
vt[i+1]=temp;
}
}
for(int j=vt.size()-di;j>=1;--j){
if(vt[j]<vt[j-1]){
flag=true;
int temp=vt[j];
vt[j]=vt[j-1];
vt[j-1]=temp;
}
}
if(flag==false){
return ;
}
}
}
void translate(vector<int>&vt){
for(int i=0;i<vt.size();++i){
cout<<vt[i]<<" ";
}
}
int main(){
dul_bubble(vt);
translate(vt);
return 0;
}