Seminar môn Cấu trúc dữ liệu và giải thuật

Giới thiệu

Mình vừa làm seminar kết thúc môn học Cấu trúc dữ liệu và giải thuật, mình sẽ chia sẻ với các bạn về seminar của mình. Đề tài của mình: Đánh giá hiệu suất các thuật toán tìm kiếm và so sánh.

Bình thường khi học, độ phức tạp về thời gian của các thuật toán mà các bạn được giới thiệu đều là Big O notation, nhìn vào đó các bạn có thể biết được thuật toán nhanh hay chậm. Tuy nhiên, các bạn lại không biết được thuật toán nhanh hay chậm hơn như thế nào. Do đó mình muốn tạo ra chương trình thực hiện các thuật toán và đo thời gian thực hiện, từ đó các bạn có thể dễ dàng so sánh và thấy được hiệu suất của thuật toán.

Dù mỗi máy có tốc độ xử lý khác nhau, hiệu suất thuật toán phụ thuộc vào rất nhiều yếu tố, tuy nhiên, các thuật toán cùng thực hiện trên cùng một máy, tức là cùng 1 điều kiện, vậy nên chúng ta vẫn có thể thấy được sự chênh lệch hiệu suất của các thuật toán.

Mình quyết định sử dụng WPF để có thể dễ dàng custom giao diện đẹp hơn.

Tính năng

Một số tính năng của phần mềm mình viết:

  • Tạo dãy số ngẫu nhiên
  • Lưu vào file
  • Load dãy số từ file
  • Tìm kiếm theo 3 thuật toán
  • Sắp xếp theo 7 thuật toán
  • Xem kết quả thời gian thực hiện thuật toán
  • Xem kết quả dãy sau khi sắp xếp
  • Xem code thuật toán bằng C++

Demo

Một số screenshot Seminar của mình:

Home screen
Home screen
Time execution result
Time execution result
View code
View code

Source code

Các bạn có thể xem code seminar của mình trên Github. Có một lưu ý nhỏ là thư mục ViewCode phải được đặt cùng cấp với file exe thì tính năng View code mới có thể lấy code ra được.

Tổng kết

Seminar này mình chỉ làm sơ sài thôi, code cũng không clean, tổ chức chưa tốt lắm, các bạn tham khảo cho vui thôi nha!

Bài viết liên quan
Code game rắn săn mồi trên console bằng C++
code-game-ran-san-moi-tren-console-bang-cpp

Code game rắn săn mồi trên console bằng C++

Chat app đơn giản với Flutter
Chat app đơn giản với Flutter

Chia sẻ project Chat app đơn giản với Flutter, sử dụng Firebase Authentication và Firestore

Todo App ASP.NET MVC x Entity Framework
Todo-Web-App-ASP.NET-MVC-x-Entity-Framework

Làm Todo Web App bằng ASP.NET MVC và Entity Framework

Bảng băm trong C++
Bang-bam-trong-cpp

Tìm hiểu về cấu trúc dữ liệu phổ biến là bảng băm hay HashTable trong C++

guest
4 Comments
Inline Feedbacks
View all comments
Dương

Seminar bạn ơi ? thiếu chữ r ở cuối kìa

Monadotory

Để đánh giá các thuật toán sort mà chỉ chọn data ngẫu nhiên là một sai lầm. Mỗi tt có trường hợp xấu nhất (ví dụ dãy ngẫu nhiên đối với selection sort) và trường hợp đẹp nhất (dãy chỉ có 1 phần tử chưa được sắp xếp). Trong nhiều trường hợp quicksort có thể không tối ưu bằng selection sort