文章

13

粉丝

328

获赞

13

访问

138.7k

头像
不懂为啥直接选择可以通过,冒泡不行,编译器运行是对的
P1010 兰州大学2018/贵州大学2018年机试
发布于2020年3月10日 11:23
阅读数 9.2k

//直接选择排序,可以通过
#include<stdio.h>
int main(){
	void sort(int s[],int l);
	int n,a[1000],i,j,k,t;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(i=0;i<n-1;i++){
		k=i;
		for(j=i+1;j<n;j++)
		    if(a[j]<a[k])
		        k=j;                //找到余下数中的最小数 
		t=a[k];a[k]=a[i];a[i]=t;    //与第i个交换 
	}
	for(i=0;i<n;i++){
	    if(a[i]%2==1)
	    	printf("%d ",a[i]);
	}
	for(i=0;i<n;i++){
	    if(a[i]%2==0)
	    	printf("%d ",a[i]);
    }
    return 0;
}

//冒泡选择排序,编译器是对的,但不知道为啥通过不了
#include<stdio.h>
int main(){
	int a[1000],n,i,p,q,min,j=0,k=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	    scanf("%d",&a[i]);
	for(i=n;i>1;i--){
		q=0;
		for(p=0;p<i;p++){
	        q++;
		    if(a[p]>a[q]){
		        min=a[q];
		        a[q]=a[p];
		        a[p]=min;             //冒泡排序,相邻两两比较,每趟将最大的放置后面 
		    }
	    }
	}
    for(i=0;i<n;i++){
	    if(a[i]%2==1)
	    	printf("%d ",a[i]);
	}
	f...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发