【题目链接】

ybt 1181:整数奇偶排序
OpenJudge NOI 1.10 06:整数奇偶排序

【题目考点】

1. 排序

【君义精讲】排序算法

【解题思路】

解法1:将奇数和偶数分开,分别排序

将奇数和偶数分别存在两个不同的数组中,奇数降序排序,偶数升序排序,分别排序输出。

解法2:整合为一个比较条件

设函数判断两个数字哪个应该排在前面

  • 如果一个是奇数一个是偶数,奇数排在前面
  • 如果都是奇数,更大的排在前面
  • 如果都是偶数,更小的排在前面

这样就得到了一个比较条件。用这个比较条件去做排序即可。
数据只有10个,用什么排序方法都可以。

【题解代码】

解法1:将奇数和偶数分开,分别排序

  • 使用STL sort函数排序
#include <bits/stdc++.h>
using namespace std;
bool cmpUp(int a, int b)//升序
{return a < b;
}
bool cmpDown(int a, int b)//降序
{return a > b;
}
int main()
{int a, odd[15], even[15], oi = 0, ei = 0;//oi:odd中元素个数 ei:even中元素个数 for(int i = 1; i <= 10; ++i){cin >> a;if(a%2 == 0)even[++ei] = a;//填充数组 elseodd[++oi] = a;}sort(odd+1, odd+1+oi, cmpDown);//奇数降序排序 sort(even+1, even+1+ei, cmpUp);//偶数升序排序for(int i = 1; i <= oi; ++i)cout << odd[i] << ' ';for(int i = 1; i <= ei; ++i)cout << even[i] << ' '; return 0;
}
  • 插入排序
#include <bits/stdc++.h>
using namespace std;
bool cmpUp(int a, int b)//升序
{return a < b;
}
bool cmpDown(int a, int b)//降序
{return a > b;
}
int main()
{int a, odd[15], even[15], oi = 0, ei = 0;//oi:odd中元素个数 ei:even中元素个数 for(int i = 1; i <= 10; ++i){cin >> a;if(a%2 == 0){even[++ei] = a;//填充数组for(int j = ei; j > 1; --j){if(even[j] < even[j-1])//偶数升序排序 swap(even[j], even[j-1]);elsebreak;                } }else{odd[++oi] = a;for(int j = oi; j > 1; --j){if(odd[j] > odd[j-1])//奇数降序排序 swap(odd[j], odd[j-1]);elsebreak;                }  }}for(int i = 1; i <= oi; ++i)cout << odd[i] << ' ';for(int i = 1; i <= ei; ++i)cout << even[i] << ' '; return 0;
}

解法2:整合为一个比较条件

  • 使用STL sort函数
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a, int b)//返回a排在前面的条件
{if(a%2 == 1 && b%2 == 1)//如果都是奇数,更大的排在前面return a > b;else if(a%2 == 0 && b%2 == 0)//如果都是偶数,更小的排在前面 return a < b;else//如果一个是奇数一个是偶数,奇数排在前面return a%2 == 1;//如果a为奇数 a在前面。如果a不是奇数,那么b为奇数,a不能排在前面。
}
int main()
{int a[15];for(int i = 1; i <= 10; ++i)cin >> a[i];sort(a+1, a+1+10, cmp);for(int i = 1; i <= 10; ++i)cout << a[i] << ' '; return 0;
}
  • 使用选择排序
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a, int b)//返回a排在前面的条件
{if(a%2 == 1 && b%2 == 1)//如果都是奇数,更大的排在前面return a > b;else if(a%2 == 0 && b%2 == 0)//如果都是偶数,更小的排在前面 return a < b;else//如果一个是奇数一个是偶数,奇数排在前面return a%2 == 1;//如果a为奇数 a在前面。如果a不是奇数,那么b为奇数,a不能排在前面。
}
int main()
{int a[15];for(int i = 1; i <= 10; ++i)cin >> a[i];for(int i = 1; i <= 9; ++i)for(int j = i+1; j <= 10; ++j)if(cmp(a[j], a[i]))//如果a[j]应该在a[i]前面 swap(a[j], a[i]);for(int i = 1; i <= 10; ++i)cout << a[i] << ' '; return 0;
}

信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序相关推荐

  1. 信息学奥赛一本通 1182:合影效果 | OpenJudge NOI 1.10 07:合影效果

    [题目链接] ybt 1182:合影效果 OpenJudge NOI 1.10 07:合影效果 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将男生身高和女生身高分别排序 将男 ...

  2. 信息学奥赛一本通 1294:Charm Bracelet | OpenJudge NOI 2.6 7113:Charm Bracelet | 洛谷 P2871

    [题目链接] ybt 1294:Charm Bracelet OpenJudge NOI 2.6 7113:Charm Bracelet 洛谷 P2871 [USACO07DEC]Charm Brac ...

  3. 信息学奥赛一本通 1209:分数求和 | OpenJudge NOI 1.13 12:分数求和

    [题目链接] ybt 1209:分数求和 OpenJudge NOI 1.13 12:分数求和 [题目考点] 1. 求最大公约数 2. 求最小公倍数 [解题思路] 求最大公约数,可以用辗转相除法.具体 ...

  4. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River

    [题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...

  5. 信息学奥赛一本通 1173:阶乘和 | OpenJudge NOI 1.6 15 | 洛谷 P1009 [NOIP1998 普及组] 阶乘之和

    [题目链接] ybt 1173:阶乘和 注:一本通上这题,应该把n≤50n\le50n≤50当做n≤100n\le100n≤100来看 OpenJudge NOI 1.6 15:阶乘和 洛谷 P100 ...

  6. 信息学奥赛一本通 1128:图像模糊处理 | OpenJudge NOI 1.8 13:图像模糊处理

    [题目链接] ybt 1128:图像模糊处理 OpenJudge NOI 1.8 13:图像模糊处理 [题目考点] 1. 二维数组 2. 四舍五入取整函数 <cmath>中的函数: dou ...

  7. 信息学奥赛一本通 1065:奇数求和 | OpenJudge NOI 1.5 09

    [题目链接] ybt 1065:奇数求和 OpenJudge NOI 1.5 09:奇数求和 [题目考点] 1. 循环求和 设置加和变量s,记住要将其初始化为0.int s = 0; 循环读入数据,将 ...

  8. 信息学奥赛一本通 1081:分苹果 | OpenJudge NOI 小学奥数 7826:分苹果

    [题目链接] ybt 1081:分苹果 OpenJudge NOI 小学奥数 7826:分苹果 [题目考点] 1. 求和 [解题思路] 该问题可以抽象为:n个整数,都大于0,n个数不同,求这n个数的和 ...

  9. 信息学奥赛一本通 1248:Dungeon Master | OpenJudge NOI 2.5 1253:Dungeon Master

    [题目链接] ybt 1248:Dungeon Master OpenJudge NOI 2.5 1253:Dungeon Master [题目翻译] 地牢城主 描述 你被困在一个3D地牢中,需要找到 ...

最新文章

  1. JavaScript学习笔记(8)——JavaScript语法之运算符
  2. Lua日期与时间操作
  3. 红帽7 -本地yum配置
  4. python中event_Python Event实现线程通信
  5. 虚拟现实技术在汽车领域的应用----数虎图像科技
  6. 谋求“同股不同权”,旷视赴港上市渐近
  7. MySQL 存储过程 if语句
  8. SAP QM 可以控制到没有收到Vendor 的certificate的话就不能做UD.
  9. 如何解决SQL server 恢复挂起状态
  10. 常用的做网站软件、网站制作软件分享
  11. 第二重要极限公式推导过程_土木考研 土力学第八章公式推导
  12. addClass()使用方法
  13. css之calc,初探CSS3中的calc()功能
  14. 华为首部鸿蒙,华为首部鸿蒙手机P50来了!顶级拍照再升级,麒麟芯片或绝唱
  15. ssd硬盘 速度慢 linux,Linux 对SSD硬盘优化的方法
  16. STM32CubeMX-5.0.0使用遇到的问题
  17. 【我的DOT语言学习之旅】 学习DOT语言并使用Graphviz软件来打开.dot文件
  18. 主流平面设计软件推荐,实用工具推荐必坑指南!
  19. 3.5Bootstrap组件篇之导航条
  20. c++ switch语句

热门文章

  1. JavaWeb -- Struts1 多文件上传与下载 DownloadAction, DispatchAction
  2. 在VS2010中F5调试Silverlight程序时,提示“无法启动调试,找不到Microsoft Internet Explorer”...
  3. 低欲望社会有多可怕?仅94万!日本去年新生人口数创历史新低,空房子如瘟疫般蔓延...
  4. Simulink之变压器隔离的直流-直流变换器
  5. python 登录接口_使用python编写一个登录接口
  6. IntelliJ IDEA竟然出了可以在云端编码的功能?
  7. 求你了,别再说数据库锁的只是索引了!!!
  8. ​Redis的各种“坑”,你知道多少?
  9. 听说年底这些公司在裁员?是不是真的......
  10. B站,被扫黄了!B站变P站?