]使用c++写几个函数: ①输人10个职工的姓名和职工号; ②按职工号由小到大顺序排序,姓名顺序也随之调整; ③要求输人一个职工号,用折半查找法找出该职工的姓名,从主函数输人 要查找的职工号,输出该职工姓名。
时间: 2024-05-14 08:16:35 浏览: 70
sort 排序:sort函数从大到小排序的方法(C++实现)
以下是使用C++实现的三个函数,分别为输入函数、排序函数和查找函数:
```c++
#include <iostream>
#include <string>
using namespace std;
const int MAX_N = 10; // 最大职工数
// 定义职工结构体
struct Employee {
string name; // 姓名
int id; // 职工号
};
// 输入函数
void input(Employee employees[]) {
cout << "请输入" << MAX_N << "个职工的姓名和职工号:" << endl;
for (int i = 0; i < MAX_N; i++) {
cin >> employees[i].name >> employees[i].id;
}
}
// 排序函数
void sort(Employee employees[]) {
for (int i = 0; i < MAX_N - 1; i++) {
for (int j = i + 1; j < MAX_N; j++) {
if (employees[i].id > employees[j].id) {
swap(employees[i], employees[j]);
}
}
}
}
// 查找函数
void search(Employee employees[], int targetId) {
int left = 0, right = MAX_N - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (employees[mid].id == targetId) {
cout << "职工号为" << targetId << "的职工姓名为:" << employees[mid].name << endl;
return;
} else if (employees[mid].id > targetId) {
right = mid - 1;
} else {
left = mid + 1;
}
}
cout << "未找到职工号为" << targetId << "的职工" << endl;
}
int main() {
Employee employees[MAX_N];
input(employees);
sort(employees);
int targetId;
cout << "请输入要查找的职工号:";
cin >> targetId;
search(employees, targetId);
return 0;
}
```
注意,上述代码中的折半查找法假定职工号已经按照从小到大的顺序排好序了,如果输入的职工号没有按照顺序排列,那么需要先进行排序。
阅读全文