文章

18

粉丝

0

获赞

96

访问

5.5k

头像
排序 题解:笨蛋算法
P1010 兰州大学/贵州大学机试
发布于2025年3月10日 14:22
阅读数 369

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
	int n;
	scanf("%d",&n);
	int a[1001];
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
	} 
	int low=0;
	int high=n-1;
	while(low<high){
		while(low<high&&a[high]%2==0) high--;
		while(low<high&&a[low]%2==1) low++;
		if(low<high){
			int zanc=a[high];
			a[high]=a[low];
			a[low]=zanc;
		}
		
	}
	int acchigh=low;
	int zancmax;
	for(int i=0;i<low;i++){
		for(int j=1;j<=acchigh;j++){
			if(a[j-1]>a[j]){
				zancmax=a[j];
				a[j]=a[j-1];
				a[j-1]=zancmax;
			}
		}
		acchigh--; 
	}

	
	acchigh=n-1;
	for(int i=low;i<n;i++){
		for(int j=low+2;j<=acchigh;j++){
			if(a[j-1]>a[j]){
				zancmax=a[j];
				a[j]=a[j-1];
				a[j-1]=zancmax;
			}
		}
		acchigh--;
	}
	for(int i=0;i<n;i++){
		printf("%d ",a[i]);
	} 
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发