] 写几个函数: ①输人10个职工的姓名和职工号; ②按职工号由小到大顺序排序,姓名顺序也随之调整; ③要求输人一个职工号,用折半查找法找出该职工的姓名,从主函数输人 要查找的职工号,输出该职工姓名。使用c++语言
时间: 2024-05-16 16:13:01 浏览: 5
以下是实现上述功能的C++代码:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int MAX_N = 10;
struct Employee {
string name;
int id;
};
Employee employees[MAX_N];
void inputEmployees() {
cout << "请输入" << MAX_N << "个职工的姓名和职工号:" << endl;
for (int i = 0; i < MAX_N; i++) {
cout << "第" << i+1 << "个职工:";
cin >> employees[i].name >> employees[i].id;
}
}
bool cmp(Employee a, Employee b) {
return a.id < b.id;
}
void sortEmployees() {
sort(employees, employees+MAX_N, cmp);
}
int binarySearch(int target) {
int left = 0, right = MAX_N-1;
while (left <= right) {
int mid = (left + right) / 2;
if (employees[mid].id == target) {
return mid;
} else if (employees[mid].id < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
inputEmployees();
sortEmployees();
int targetId;
cout << "请输入要查找的职工号:";
cin >> targetId;
int index = binarySearch(targetId);
if (index == -1) {
cout << "没有找到该职工。" << endl;
} else {
cout << "职工号为" << targetId << "的职工姓名是" << employees[index].name << endl;
}
return 0;
}
```
其中,`inputEmployees` 函数用于输入职工信息,`sortEmployees` 函数用于按职工号排序,`binarySearch` 函数用于折半查找职工姓名。在主函数中,先调用 `inputEmployees` 和 `sortEmployees` 函数,然后输入要查找的职工号,最后调用 `binarySearch` 函数查找职工姓名并输出。