Cấu trúc dữ liệu và giải thuật cơ bản cho người mới bắt đầu (Phần 1)

Phần 1: Cấu trúc dữ liệu và giải thuật là gì?

Trong loạt bài viết này, tôi sẽ trình bày một số cấu trúc dữ liệu và giải thuật cơ bản nhất, dành cho những bạn mới làm quen với công nghệ thông tin và lập trình, cả những bạn mà ngành học không phải CNTT nhưng mong muốn tìm hiểu thêm về lĩnh vực này theo ý hiểu của tôi , một cách đơn giản nhất. Những bạn đã học lâu về CNTT nếu có các góp ý mình cũng xin trân trọng đón nhận để bài viết có thể hoàn thiện hơn. Bài viết có tham khảo từ khóa học Cấu trúc dữ liệu và giải thuật, được giảng dạy bởi T.S Lê Sỹ Vinh tại trường ĐH Công nghệ – ĐHQGHN

“Algorithm + Data structure = Program”

_Niklaus Wirth_

Đây là một phương trình, một trích dẫn đồng thời cũng là một cuốn sách kinh điển (1976) của nhà khoa học máy tính Niklaus Wirth. Thật vậy, cấu trúc dữ liệu và giải thuật là những thứ cơ bản nhất khi bạn muốn học về lập trình. Nó như những viên gạch quan trọng nhất để xây dựng nên một hệ thống máy tính, công nghệ cực lớn, bao trùm và chi phối toàn thế giới trong thế giới ngày nay. Vậy, cấu trúc dữ liệu và giải thuật (tôi xin được gọi tắt là DSA – Data Structures and Algorithms) là gì?

A data structure is a particular way of storing and organizing data
so that they can be used efficiently.

Nói đơn giản, cấu trúc dữ liệu là cách mà chúng ta tổ chức và lưu trữ thông tin trên máy tính, mà có thể sử dụng được một cách hiệu quả. Vậy, thế nào là hiệu quả? Có rất nhiều tiêu chí để đánh giá một giải thuật có “hiệu quả” hay không. Nhưng có một số tiêu chí cơ bản được thừa nhận rộng rãi, đó là:

  1. Tính đúng đắn
  2. Sử dụng bộ nhớ một cách hiệu quả
  3. Dễ hiểu và dễ cài đặt

An algorithm is a step by step procedure to solve a problem. An algorithm can be described by nature languages (English, Vietnamese…) or programming languages (C++, Java, Python…)

algorithms-programming-humour

Định nghĩa thuật toán lại càng đơn giản, đó là một chuỗi các bước để giải một bài toán. Thuật toán có thể được miêu tả bằng lời nói hoặc một ngôn ngữ lập trình nào đó. Chúng ta hãy xem một ví dụ sau đây về thuật toán … nấu cơm:

  1. Lấy gạo
  2. Vo gạo
  3. Cho nước vào gạo
  4. Cho gạo vào nồi
  5. Bật nút “Cook” ở nồi cơm
  6. Khi nào nút “Cook” chuyển sáng “Warm” thì rút điện.

Vậy đó, thuật toán nấu cơm rất đơn giản mà ai trong chúng ta cũng có thể hiểu được. Các thuật toán máy tính cũng vậy, cũng được miêu tả theo một trình tự tương tự để giải quyết một vấn đè nảy sinh trong cuộc sống hàng ngày. Thuật toán không phải là một khái niệm xa lạ mà nó xuất hiện cực nhiều và thường xuyên trong đời sống của chúng ta. Thuật toán giặt quần áo, thuật toán nấu cơm, thuật toán mua đồ ăn thế nào cho ngon và rẻ, thuật toán đi thăm bạn bè thế nào để đi ngắn nhất… Chính vì vậy, thuật toán, đi kèm với cấu trúc dữ liệu và giải thuật là những thứ mà bất cứ ai cũng có thể học được (và nên học), không kể bạn có đang học và làm ngành nghề gì, đang ở phổ thông hay đại học, đang 20 tuổi hay 50 tuổi. Cấu trúc dữ liệu và giải thuật không những giúp bạn biết “bọn CNTT làm gì” mà bằng cách nào đó sẽ giúp bạn có một tư duy logic và trật tự hơn, sẽ giúp ích các bạn rất nhiều trong cuộc sống và công việc hiện tại của các bạn.

Phần 2:  Mảng, Danh sách liên kết và Độ phức tạp của thuật toán

2 thoughts on “Cấu trúc dữ liệu và giải thuật cơ bản cho người mới bắt đầu (Phần 1)

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s