赞
踩
一种是检查前缀向量(左侧)是否已经是有序向量的冒泡排序。
- void bubblesort1(vector<int>& v,int lo,int hi){
- bool sorted =false;//初始化
- int i;
- while (!sorted){
- sorted = true;//假设有序
- i = lo;
- while (++i < hi){
- if (v[i - 1]>v[i]){
- swap(v[i - 1], v[i]);
- sorted = false;
- }
- }
- --hi;
- }
- }
一种是检查后缀向量(右侧)是否已经是有序向量的冒泡排序。
- void bubblesort2(vector<int>& v, int lo, int hi){
- while (lo<hi){
- int i = lo;
- int last = i;//最右侧逆序对初始化为[lo-1,lo]
- while (++i < hi){
- if (v[i - 1]>v[i]){
- swap(v[i - 1], v[i]);
- last = i;//更新最右侧逆序对位置记录
- }
- }
- hi=last;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。