HM165 按编号选择排序

HM165 按编号选择排序

HM165 按编号选择排序

来源: 第 165 集 职工管理系统-按照职工编号进行排序功能实现

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

用户指定按职工编号升序还是降序。排序算法必须用**选择排序**,不要用库函数 sort

实现 sortEmp

  1. 若空档标志为真(文件不存在或记录为空),输出 文件不存在或记录为空
  2. 否则读入排序方式 \(x\)。\(x=1\) 按编号升序;其余值(包括 \(x=2\) 以及输错的数)一律按编号降序。
  3. 外层 \(i\) 从 \(0\) 到人数减一。先认定 minOrMax = i。内层 \(j\) 从 \(i+1\) 扫到末尾:
    • 升序:若 a[minOrMax] 的编号大于 a[j] 的编号,则 minOrMax = j(当前认定的还不是最小)。
    • 降序:若 a[minOrMax] 的编号小于 a[j] 的编号,则 minOrMax = j(当前认定的还不是最大)。
  4. 若 \(i \ne minOrMax\),交换这两个基类指针(只换指针,不重新创建对象)。
  5. 排完后输出一行 排序成功,排序后的结果为:,再按多态调用 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
通过率
?
上传者