Hiểu về thuật toán QuickSort

Posted in Algorithm

Thuật toán dựa trên kỹ thuật chia để trị,được đề xuất bởi C.A.R Hoare
Ý tưởng như sau:

Sắp xếp dãy khóa k[1..n] thì có thể coi là sắp xếp đoạn từ chỉ số 1 tới chỉ số n trong dãy khóa đó.
Nếu đoạn đó có ít hơn 2 khóa thì không cần làm gì cả, nếu đoạn đó có ít nhất 2 khóa, ta chọn một khóa ngẫu nhiên nào đó làm chốt (pivot). Mọi khóa nhỏ hơn khóa chốt được xếp vào vị trí đứng trước chốt,mọi khóa lớn hơn chốt được xếp vào vị trí sau chốt.Sau phép hoán chuyển như vậy thì đoạn đang xét được chia làm 2 đoạn khác rỗng mà mọi khóa trong đoạn đầu đều <= chốt và mọi khóa trong đoạn sau đều >= chốt. Vấn đề trở thành sắp xếp 2 đoạn mới được tạo ra (độ dài ngắn hơn độ dài đoạn ban đầu) bằng phương pháp tương tự (gọi đệ quy)
Độ phức tạp là O(n*lgn) Continue reading

Các lỗi sai cơ bản trong C#

Posted in Tips

#1 Sử dụng kiểu dữ liệu tham chiếu như một kiểu nguyên thuỷ hay kiểu giá trị

Trong lập trình C++ hay nhiều ngôn ngữ khác có sử dụng kiểu dữ liệu tham chiếu, tức là các giá trị cửa kiểu dữ liệu đó tham chiều tới cùng một vùng nhớ. Để hiểu về kiểu dữ liệu nguyên thuỷ (value type hay primitive type) hay kiểu dữ liệu tham chiếu (reference type) bạn cần hiểu đôi chút về vùng nhớ trong đó có heap và stack. Continue reading

Giới Thiệu Về Prolog và Ứng Dụng Vào Hệ Giải Toán (Part2)

Posted in You don't know Dev!, You don't know Prolog

Chương II: Ứng Dụng Vào Hệ Giải Toán

Các phép toán đơn giản

Bài toán 1: Các phép toán số học cơ bản: + , – , *, /,mod.

Yêu cầu bài toán.

Cho 2 toán hạng a và b. Tính tổng, hiệu, tích, thương và chia lấy dư của 2 toán hàng đó.

  • Input: Cho 2 số a và b.
  • Output: Tính
  • Tổng: a + b = ?
  • Hiệu: a – b = ?
  • Tích: a * b = ?
  • Thương: a / b = ?
  • Chia lấy phần dư: a mod b =?.

Ý tưởng giải thuật. Continue reading

Giới Thiệu Về Prolog và Ứng Dụng Vào Hệ Giải Toán (Part1)

Posted in You don't know Dev!, You don't know Prolog

Chương I: Giới Thiệu Về Prolog

  1. Giới thiệu

Prolog là ngôn ngữ được sử dụng phổ biến nhất trong dòng các ngôn ngữ lập trình lôgich (Prolog có nghĩa là PROgramming in LOGic). Ngôn ngữ Prolog do giáo sư người Pháp Alain Colmerauer và nhóm nghiên cứu của ông đề xuất lần đầu tiên tại trường Đại học Marseille đầu những năm 1970. Đến năm 1980, Prolog nhanh chóng được áp dụng rộng rãi ở châu Âu, được người Nhật chọn làm ngôn ngữphát triển dòng máy tính thế hệ 5. Prolog đã được cài đặt trên các máy vi tính Apple II, IBM-PC, Macintosh. Continue reading

Hướng dẫn sử dụng tool cào (scraping) ebooks

Posted in Source Code, Tips

Nóng hổi!! Mình mới làm xong cái tool cào ebooks chuyên ngành về máy. Với các tính năng sau:

  • Cào ebooks theo từ trang
  • Cào ebooks theo danh mục category
  • View và download từ ebooks
  • Download nhiều ebooks bạn chọn
  • Download và sắp xếp thư mục theo danh mục categories
  • Export file csv chứa các link ebooks nhằm lưu trữ link khi cần
  • … Sẽ cập nhập thêm …

Continue reading