4.写几个函数: (1)输入 10 个职工号; (2)按职工号从小到大排序: (3) 要求输入一个职工号,用折半法找出来。(用指针实现)
时间: 2023-06-26 20:07:39 浏览: 108
以下是 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
// 定义职工结构体
struct Employee {
int id;
};
// 输入函数
void input(Employee* empArr, int len) {
for (int i = 0; i < len; i++) {
cout << "请输入职工号:";
cin >> empArr[i].id;
}
}
// 排序函数,按职工号从小到大排序
void sort(Employee* empArr, int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (empArr[j].id > empArr[j + 1].id) {
Employee temp = empArr[j];
empArr[j] = empArr[j + 1];
empArr[j + 1] = temp;
}
}
}
}
// 折半查找函数
int binarySearch(Employee* empArr, int len, int target) {
int left = 0;
int right = len - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (empArr[mid].id == target) {
return mid;
} else if (empArr[mid].id > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
const int len = 10;
Employee empArr[len];
// 输入职工号并排序
input(empArr, len);
sort(empArr, len);
// 输出排序结果
cout << "排序结果:" << endl;
for (int i = 0; i < len; i++) {
cout << empArr[i].id << " ";
}
cout << endl;
// 折半查找
int target;
cout << "请输入要查找的职工号:";
cin >> target;
int index = binarySearch(empArr, len, target);
if (index == -1) {
cout << "未找到该职工号" << endl;
} else {
cout << "该职工号在数组中的位置为:" << index << endl;
}
return 0;
}
```
运行结果示例:
```
请输入职工号:345
请输入职工号:123
请输入职工号:678
请输入职工号:234
请输入职工号:789
请输入职工号:456
请输入职工号:890
请输入职工号:567
请输入职工号:901
请输入职工号:432
排序结果:
123 234 345 432 456 567 678 789 890 901
请输入要查找的职工号:345
该职工号在数组中的位置为:2
```
阅读全文