以下是用 Python 实现上述排序需求的代码: ```python class Student: def __init__(self, student_id, name, total_score, math_score, english_score): self.student_id = student_id self.name = name self.total_score = total_score self.math_score = math_score self.english_score = english_score def insertion_sort(students): """ 直接插入排序函数 :param students: 学生对象列表 :return: 排序后的学生对象列表 """ for i in range(1, len(students)): key = students[i] j = i - 1 while j >= 0 and (key.total_score > students[j].total_score or (key.total_score == students[j].total_score and (key.math_score > students[j].math_score or (key.math_score == students[j].math_score and (key.english_score > students[j].english_score or (key.english_score == students[j].english_score and key.student_id < students[j].student_id))))): students[j + 1] = students[j] j -= 1 students[j + 1] = key def bubble_sort(students): """ 冒泡排序函数 :param students: 学生对象列表 :return: 排序后的学生对象列表 """ n = len(students) for i in range(n): for j in range(0, n - i - 1): if (students[j].total_score < students[j + 1].total_score or (students[j].total_score == students[j + 1].total_score and (students[j].math_score < students[j + 1].math_score or (students[j].math_score == students[j + 1].math_score and (students[j].english_score < students[j + 1].english_score or (students[j].english_score == students[j + 1].english_score and students[j].student_id > students[j + 1].student_id))))): students[j], students[j + 1] = students[j + 1], students[j] # 测试数据 students = [ Student(1, "Alice", 85, 70, 80), Student(2, "Bob", 90, 85, 75), Student(3, "Charlie", 85, 80, 70), Student(4, "David", 90, 85, 80), Student(5, "Eve", 85, 70, 85) ] # 直接插入排序 insertion_sort(students) print("直接插入排序结果:") for student in students: print(f"学号:{student.student_id},姓名:{student.name},总分:{student.total_score}") # 冒泡排序 students = [ Student(1, "Alice", 85, 70, 80), Student(2, "Bob", 90, 85, 75), Student(3, "Charlie", 85, 80, 70), Student(4, "David", 90, 85, 80), Student(5, "Eve", 85, 70, 85) ] bubble_sort(students) print("冒泡排序结果:") for student in students: print(f"学号:{student.student_id},姓名:{student.name},总分:{student.total_score}") ``` 额外需要注意的逻辑点: 1. 比较条件的逻辑要清晰准确,确保能够按照题目要求的优先级进行排序。 2. 对于学生对象的属性操作要小心,避免错误修改或访问不存在的属性。 3. 在实现排序算法时,要注意边界情况,比如列表为空或只有一个元素的情况。 [2024-11-26 10:24:04 | AI写代码神器 | 895点数解答]