我是靠谱客的博主 阳光水杯,最近开发中收集的这篇文章主要介绍XDOJ208,奇偶排序,利用队列思想,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

标题
奇偶排序

描述
定义一个一维整形数组num[20],输入正整数N(N≤20)
代表num的实际元素个数,输入N个任意整数到num中,
编写函数sort()实现排序处理,完成前面奇数,后面偶数,
分别从小到大排序。
使用指针完成地址传递,主函数完成N、数组元素的输入和处理后的数组元素输出。
   
时间限制
1    

内存限制
10000    

类别
1

输入说明
输入正整数N(N≤20)和N个任意排列的整形到一维数组num中。

输出说明
格式输出:数据之间空一格,奇数和偶数分界处空三个空格。

输入样例
5
2 3 7 8 4

输出样例
3 7   2 4 8

提示
使用指针作形参,实现地址传递。
前面奇数、后面偶数,分别从小到大排序。
输出数据之间空一格,奇数和偶数分界处空三个空格。
 

#include <stdio.h>
int sort(int *num,int n)//调用函数进行实现
{
int s=0,i,j,t,left,right;
for(i=0;i<n;i++)
{
if(*(num+i)%2!=0)
{
s++;
}
}//计算奇数的个数
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(*(num+j)>*(num+j+1))
{
t=*(num+j);
*(num+j)=*(num+j+1);
*(num+j+1)=t;
}
}
}//利用冒泡排序将数组从小到大排列
right=n+s;//偶数所在的起始位
left=n;//奇数所在的起始位
for(i=0;i<n;i++)
{
if(*(num+i)%2==0)
{
*(num+right)=*(num+i);
right++;
}
else if(*(num+i)%2==1)
{
*(num+left)=*(num+i);
left++;
}
} //将奇数和偶数分开
return s;//返回奇数的个数,方便打印空格
}
int main()
{
int num[100];
int n,i,s;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}//输入数组
s=sort(num,n);//奇数个数
for(i=n;i<n+n;i++)
{
printf("%d ",num[i]);
if(i==s+n-1)
printf(" ");
}//打印
} 

最后

以上就是阳光水杯为你收集整理的XDOJ208,奇偶排序,利用队列思想的全部内容,希望文章能够帮你解决XDOJ208,奇偶排序,利用队列思想所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部