[Danh sách đối tượng] – Thuật toán sắp xếp danh sách đối tượng

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.

Bài tiếp: Các thuật toán đệ quy

Bài trước: Các thuật toán về danh sách đối tượng 

Đối tác tuyển dụng