写几个函数:(1)输入10个职工的姓名和职工号;(2)按职工号从小到大排序,姓名也相应改变顺序;(3)要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
时间: 2023-05-03 19:00:28 浏览: 125
这个问题要求我们书写几个函数:
1) 输入10个职工的姓名和职工号;
2) 按职工号从小到大排序,姓名也相应改变顺序;
3) 要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
相关问题
写几个函数: 1) 输入10个职工的姓名和职工号; 2) 按职工号从小到大排序,姓名也相应改变顺序; 3) 要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工的职工号,输出该职工的姓名。
好的,这是一个比较实用的问题,我可以为你编写一下这些函数。下面是代码:
```python
def input_info():
# 输入职工姓名和职工号
info_list = []
for i in range(10):
name = input("请输入第{}个职工的姓名:".format(i+1))
id_num = input("请输入第{}个职工的职工号:".format(i+1))
info_list.append({'name':name, 'id_num':id_num})
return info_list
def sort_info(info_list):
# 按职工号从小到大排序,姓名也相应改变顺序
return sorted(info_list, key=lambda x:x['id_num'])
def binary_search(info_list, id_num):
# 折半法查找职工姓名
left, right = 0, len(info_list)-1
while left <= right:
mid = (left+right) // 2
if id_num == info_list[mid]['id_num']:
return info_list[mid]['name']
elif id_num > info_list[mid]['id_num']:
left = mid+1
else:
right = mid-1
return "未找到该职工信息!"
if __name__ == '__main__':
info = input_info()
sorted_info = sort_info(info)
print("排序后的职工信息为:")
for i in sorted_info:
print("姓名:{},职工号:{}".format(i['name'], i['id_num']))
id_num = input("请输入要查找的职工的职工号:")
name = binary_search(sorted_info, id_num)
print("该职工的名称为:", name)
```
希望我的答案能够满足您的需求。如果您还有什么问题,请随时问我。
4.写几个函数: (1)输入 10 个职工号; (2)按职工号从小到大排序: (3) 要求输入一个职工号,用折半法找出来。(用指针实现)
以下是 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
```
阅读全文