动态边界冒泡排序优化

下午在复习排序算法时,突发奇想自己按照鸡尾酒排序算法思路写一遍,然后动态边界冒泡排序(Dynamic Boundary Boubble Sort)就这么诞生了。它的思路与鸡尾酒排序不同的是:每次扫描后根据最后一次交换的位置动态调整边界减少无效比较,在数组部分有序的情况下,效率应该比鸡尾酒排序更高。代码如下:

#include 
using namespace std;
const int N=1005;
int a[N];//原数组 

int main() {
	int n;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	bool flag=true;//是否发生过交换 
	int t=n;//初始化右边界 
	while(flag){
		flag=false;
		int last=1;//最后一次交换位置 
		for(int i=1;ia[i+1]){
				swap(a[i],a[i+1]);
				flag=true;
				last=i;
			}
		t=last;//更新右边界 
	}
	for(int i=1;i<=n;i++) cout<

 2025.3.13

保留所有权利。 未经许可,禁止转载或用于商业用途。

你可能感兴趣的:(算法,排序算法)