PTA 通讯录排序 输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
时间: 2024-02-18 14:05:55 浏览: 90
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。
5星 · 资源好评率100%
好的,这是一道排序题目,我们可以使用快速排序或者归并排序来完成这个任务。以下是使用快速排序的代码实现:
```python
class Friend:
def __init__(self, name, birthday, phone):
self.name = name
self.birthday = birthday
self.phone = phone
def quick_sort(friends, left, right):
if left >= right:
return
pivot = friends[left].birthday
i = left
j = right
while i < j:
while i < j and friends[j].birthday <= pivot:
j -= 1
while i < j and friends[i].birthday >= pivot:
i += 1
if i < j:
friends[i], friends[j] = friends[j], friends[i]
friends[left], friends[i] = friends[i], friends[left]
quick_sort(friends, left, i-1)
quick_sort(friends, i+1, right)
if __name__ == '__main__':
n = int(input())
friends = []
for i in range(n):
name, birthday, phone = input().split()
friend = Friend(name, int(birthday), phone)
friends.append(friend)
quick_sort(friends, 0, n-1)
for friend in friends:
print(friend.name, friend.birthday, friend.phone)
```
我们首先定义一个 Friend 类来存储每个朋友的信息,然后使用快速排序算法按照生日从大到小的顺序排序,最后依次输出通讯录。请注意,这里我们使用了递归调用快速排序函数,时间复杂度为 O(nlogn)。
阅读全文