HM165 按编号选择排序
HM165 按编号选择排序
来源: 第 165 集 职工管理系统-按照职工编号进行排序功能实现
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
用户指定按职工编号升序还是降序。排序算法必须用**选择排序**,不要用库函数 sort。
实现 sortEmp:
- 若空档标志为真(文件不存在或记录为空),输出
文件不存在或记录为空。 - 否则读入排序方式 \(x\)。\(x=1\) 按编号升序;其余值(包括 \(x=2\) 以及输错的数)一律按编号降序。
- 外层 \(i\) 从 \(0\) 到人数减一。先认定
minOrMax = i。内层 \(j\) 从 \(i+1\) 扫到末尾:- 升序:若
a[minOrMax]的编号大于a[j]的编号,则minOrMax = j(当前认定的还不是最小)。 - 降序:若
a[minOrMax]的编号小于a[j]的编号,则minOrMax = j(当前认定的还不是最大)。
- 升序:若
- 若 \(i \ne minOrMax\),交换这两个基类指针(只换指针,不重新创建对象)。
- 排完后输出一行
排序成功,排序后的结果为:,再按多态调用showInfo展示全部职工,并把当前顺序同步写回empFile.txt。
showInfo 格式:
职工编号:编号职工姓名:姓名岗位:岗位岗位职责:职责
岗位:\(1\) 员工,\(2\) 经理,\(3\) 总裁。
输入格式
第一行一个整数 \(n\)(\(0 \le n \le 1000\))。
\(n \ge 1\) 时,接下来 \(n\) 行:编号 \(id\)、不含空白的姓名 \(s\)、岗位 \(d\)(编号互异,\(d \in \{1,2,3\}\))。
再一行整数 \(q\)(\(1 \le q \le 20\))。随后 \(q\) 行,每行一个整数 \(x\),表示一次排序方式。
输出格式
若 \(n=0\),只输出一行 文件不存在或记录为空。
否则对每次排序:先输出 排序成功,排序后的结果为:,再输出全部职工的 showInfo,每人一行。
样例
输入 #1
6
2 赵四 1
3 王五 3
4 赵六 1
5 王五 1
6 王五 2
1 张三 1
2
1
2
输出 #1
排序成功,排序后的结果为:
职工编号:1 职工姓名:张三 岗位:员工 岗位职责:完成经理交给的任务
职工编号:2 职工姓名:赵四 岗位:员工 岗位职责:完成经理交给的任务
职工编号:3 职工姓名:王五 岗位:总裁 岗位职责:管理公司所有事务
职工编号:4 职工姓名:赵六 岗位:员工 岗位职责:完成经理交给的任务
职工编号:5 职工姓名:王五 岗位:员工 岗位职责:完成经理交给的任务
职工编号:6 职工姓名:王五 岗位:经理 岗位职责:完成老板交给的任务,并下发任务给员工
排序成功,排序后的结果为:
职工编号:6 职工姓名:王五 岗位:经理 岗位职责:完成老板交给的任务,并下发任务给员工
职工编号:5 职工姓名:王五 岗位:员工 岗位职责:完成经理交给的任务
职工编号:4 职工姓名:赵六 岗位:员工 岗位职责:完成经理交给的任务
职工编号:3 职工姓名:王五 岗位:总裁 岗位职责:管理公司所有事务
职工编号:2 职工姓名:赵四 岗位:员工 岗位职责:完成经理交给的任务
职工编号:1 职工姓名:张三 岗位:员工 岗位职责:完成经理交给的任务
输入 #2
0
输出 #2
文件不存在或记录为空
说明
- 必须写选择排序:每一轮先认定极值下标,内层找到真实极值后再决定是否交换。
- \(x \ne 1\) 一律当降序,不要单独报错。
- 交换的是指针,职工对象本身还在堆区。
信息
- ID
- 1164
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者