Sắp xếp danh sách đối tượng là bài toán thường gặp, nếu các ngôn ngữ mạnh về lập trình hướng đối tượng và đã có sẵn hàm sắp xếp thì bạn chỉ cần khai báo Interface cho lớp thì có thể dùng được. Nếu bạn không thích dùng Interface thì có thể tham khảo bài này.
Bài 1: Viết chương trình khởi tạo một danh sách các học sinh với mỗi học sinh bao gồm các thông tin như sau: Mã học sinh, Tên học sinh, Lớp, Điểm môn Toán, Điểm môn Văn. Sau đó sắp xếp học sinh theo thứ tự giảm dần theo kết quả học tập. Kết quả học tập được hiểu theo điểm trung bình của các môn (Điểm trung bình = (Điểm môn Toán + Điểm môn Văn)/2).
Phân tích và tìm cách giải
- Khai báo một lớp Student{studentCode, studentName, batch, mathScore, LiteratureScore}
- Nhập vào danh sách sinh viên
- Sử dụng thuật toán nổi bọt để sắp xếp danh sách theo điểm trung bình
Cách biểu diễn thuật toán sắp xếp danh sách đối tượng
Trong trường hợp này, tôi sử dụng ngôn ngữ giả.
//Khai bao lop Student
Class Student{
Int studentCode // Mã sinh viên
String studentName // Tên sinh viên
String batch // Tên lớp
Double mathScore //Điểm môn toán
Double literatureScore //Điểm môn văn
//Viết các getter và setter ở đây
// Viết hàm tính điểm Trung bình
Double getAvg(){
Return (mathScore + literatureScore)/2
}
}
Declare List<Student> studentList
Input(List<student> studentList){
Boolean choice=true
Loop choice
new student
Input student.setStudentCode
Input student.setStudentName
Input student.setBatch
Input student.setMathScore
Input student.setLiteratureScore
studentList.add(student) //Thêm student vào danh sách
Input choice // Thay đổi giá trị choice
}
// Sắp xếp danh sách học sinh
SortStudentList(List<Student> studentList){
Student temp;
Loop i=0 to studentList.length-2
Loop j=i+1 to studentList.length-1
If(studentList.get(i).getAvg()< studentList.get(j).getAvg())then
temp= studentList.get(i)
studentList.set(i, studentList.get(j))
studentList.set(j, temp)
PrintStudentList(studentList)
}
// In danh sách học sinh trong list
PrintStudentList(List<Student> studentList){
Loop each student in list
Print student
}
Như đã nói ngay từ đầu phần này giúp bạn làm quen với cách biểu diễn thuật toán, còn chi tiết về các thuật toán của phần hướng đối tượng bạn cần nghiên cứu kỹ trong môn học Lập trình hướng đối tượng.