1065: 小恶魔要排序
题目
题目描述
助教是个小恶魔,因为她不知道要出什么机考题了。 然后她发现大家已经学完了指针和函数模板,欣喜若狂。 她用腻了STL库中的排序,想要手写排序玩一玩,所以她出了这道题,顺便让大家体会一下下学期数据结构不能用STL的机考氛围。 小恶魔助教读入了一列东西,想让你写一个排序函数,完成她想要的排序:
- 0 将一列整数从小到大排序;
- 1 将一列整数从大到小排序;
- 2 将一列字符串从小到大排序;
- 3 将一列字符串从大到小排序。
小恶魔助教已经在给定的sample.cpp
里写好了四个操作所需要的比较函数。
要求如下:
- 只允许写一个排序函数sort
。
- 禁止修改或重写sample.cpp
中已经给定的部分,包括读入、函数调用、输出,请根据所给出的函数调用写代码,已给代码保证所有的读入、输出部分不会导致错误、超时等问题。
- 禁止使用任何C++自带的可用于排序的函数。禁止使用除代码中给定的库以外的库。
- 保证按要求调用比较函数不会发生答案错误!字符串的比较方式详见给定的比较函数。
- 不限制使用的排序算法。$ n^2 $ 算法也是可以通过本题的。
- 请使用指向函数的指针和函数模板完成代码。
输入格式
第一行一个整数$op$,表示小恶魔助教想要的操作数。 第二行一个整数$n$,表示一列数字/字符串的个数。 第三行$n$个数字/字符串。
输出格式
一行表示排完序的数列/字符串列。
样例输入
SAMPLE INPUT 1
text
0
5
1 5 3 4 2
SAMPLE INPUT 2
text
3
5
aaa bbb ccc ddd eee
样例输出
SAMPLE OUTPUT 1
text
1 2 3 4 5
SAMPLE OUTPUT 2
text
eee ddd ccc bbb aaa
数据范围
$n \leq 100$, 保证所有数字为int范围内正整数。不限制使用的排序算法。$ n^2 $ 算法也是可以通过本题的。
给定的sample.cpp
如下,请以此为基础完成你的程序:
sample.cpp
如下:
```cpp
include
include
include
include
include
include
using namespace std;
int n = 0; int a[10005] = {0}; string str[1005];
//TODO //sort
bool IncreaseInt(int x,int y) { return x < y; } bool DecreaseInt(int x,int y) { return y < x; } bool IncreaseString(string x, string y) { return x < y; } bool DecreaseString(string x, string y) { return y < x; }
int main()
{
//主程序中仅此处允许添加必要的代码。其余部分不可修改。
int op;
char chh[100];
scanf("%d",&op);
switch (op)
{
case 0:
scanf("%d",&n);
for (int i=0;i<n;++i) scanf("%d",&a[i]);
sort(a,0,n-1,IncreaseInt);
for (int i=0;i<n;++i) printf("%d ",a[i]);
break;
case 1:
scanf("%d",&n);
for (int i=0;i<n;++i) scanf("%d",&a[i]);
sort(a,0,n-1,DecreaseInt);
for (int i=0;i
Oops! 本题目还没有解答!
助教老师们编题的速度,已经超过了解题的速度!
OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。
如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!