选择、冒泡、桶排 模板

一、选择排序

for(int i=0;i<n;i++){
	k=i;
	for(int j=i+1;j<n;j++){
		if(a[j]<a[k]) k=j;
	}
	if(k!=i) swap(a[i],a[k]); 
}

时间复杂度:O(n^2)
稳定性:不稳定

二、冒泡排序(2.0版)

bool flag;
for(int i=0;i<n-1;i++){
	flag=true;
	for(int j=0;j<n-i;j++){
		if(a[j]>a[j+1]){
			swap(a[j],a[j+1]);
			flag=false;
		}
	}
	if(flag=true) break;
}

时间复杂度:O(n^2)
稳定性:稳定

三、桶排序

const int k=INF;	//这里的k指n的上界 
for(int i=1;i<=n;i++){
	scanf("%d",&k);
	b[k]=k;
}
for(int i=0;i<=k;i++){
	while(b[i]>0){
		printf("%d ",i);
		b[i]--;
	}
}

时间复杂度:O(n)
注:还有O(n)的辅助空间

稳定性:稳定

----------------------------------------------THE END-----------------------------------------

posted @ 2020-03-11 15:36  _pwl  阅读(240)  评论(1编辑  收藏  举报
1 2 3
4