openjudge 1.10.6 整数奇偶排序

OpenJudge - 06:整数奇偶排序


解题思路:

1.由题可得,一共十个数字,奇数按照降序输出,偶数按照升序输出,那么可以设置两个数组,a用来存奇数,b用来存偶数

2.利用排序的方法将两个数组分别进行降序排序和升序排序

3.输出两个数组


#include<bits/stdc++.h>
using namespace std;
int a[100],b[100];
int main()
{
	int x,num1=0,num2=0;

	for(int i=1;i<=10;i++)
	{
		cin>>x;
		if(x%2==1)
		a[++num1]=x;//将奇数加入到数组a 
		else
		b[++num2]=x;//将偶数加入到数组b 
	}

	for(int i=1;i<=num1-1;i++)//冒泡排序排序n-1轮 
	{
		for(int j=num1;j>=i+1;j--)//每轮排序比较n-1-i次 
		{
			if(a[j]>a[j-1])//如果后一个数大于前一个 
			{
				int temp=a[j];
				a[j]=a[j-1];
				a[j-1]=temp;
			} 
		}
	}

	for(int i=2;i<=num2;i++)//插入排序,从第二个数字开始 
	{
		int k=i-1;//书签为该位置的前一位 
		int temp=b[i];//temp记录当前这个值 
		while(k>0&&b[k]>temp)//如果前一位的数字比待插入的数字大 
		{
			b[k+1]=b[k];//前一位的数字往后移动一位 
			k--;//书签减1 
		}
		if(k!=i-1)//如果书签发生了变化 
		b[k+1]=temp;//将当前这个值插入到指定位置 
	}

	for(int i=1;i<=num1;i++)
	cout<<a[i]<<" ";

	for(int i=1;i<=num2;i++)
	cout<<b[i]<<" ";
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值