- vừa được xem lúc

Tại sao cấu trúc dữ liệu và giải thuật quan trọng?

0 0 9

Người đăng: Son Nguyen Hong

Theo Viblo Asia

Giải thuật là gì?

Một đoạn code tốt nhất không phải là đoạn code ngắn nhất, ít dòng nhất mà là đoạn code có hiệu năng cao nhất. Trong một lớp đại học nọ có một bài toán nhỏ được đưa ra, ông A code rất nhanh, rất ngắn và hoàn thành trước tiên, một lúc sau ông B mới xong và code còn dài hơn - tất nhiên là cũng gọn gàng. Nhưng sau đó hãy nhìn vào kết quả của 2 ông: trung bình tất cả các test case ông A hết 1,25s, ông B hết 0,8s, bộ nhớ ông B cần cũng ít hơn ông A, vậy chúng ta nên nhận xét code của ông nào tốt hơn? tất nhiên là ông B rồi.

Vậy vấn đề ở đây là gì? không phải code cứ chạy xong là xong, chúng ta phải biết cách tối ưu hóa chúng. Có thể ở đây ông A biết cách giải bài toán nhưng ông B biết cách tối ưu hóa hiệu năng cho chúng. Và ông B chắc chắn giỏi một thứ hơn - đó là giải thuật.

Giải thuật - Algorithm - tạm dịch là một tập các hướng dẫn được xác định rõ ràng theo từng bước một để xử lý dữ liệu. Hơi mông lung một chút nhưng cứ hiểu đơn giản là các phép tính theo trình tự, có logic, từng bước một rất rõ ràng để xử lý dữ liệu và không phụ thuộc ngôn ngữ nào cả.

Cấu trúc dữ liệu là gì?

Cấu trúc dữ liệu - Data structure - là cách lưu trữ và tổ chức dữ liệu sao cho chúng được sử dụng hiệu quả.

Việc chọn loại cấu trúc dữ liệu sẽ phụ thuộc vào mỗi bài toán và mỗi hoàn cảnh. Ví dụ trong một bài toán cần lưu trữ một số dữ liệu có sẵn và hữu hạn, vậy ta nên dùng Array thay cho các loại cấu trúc có bộ nhớ động khác như Linked-list, bởi vì Array sẽ cần ít bộ nhớ hơn và trong bài toán này ta chỉ cần đọc dữ liệu, trong khi độ phức tạp khi đọc dữ liệu của Array chỉ là O(1).

Tóm lại: Chúng ta code lúc nào cũng liên quan tới cấu trúc dữ liệu và thuật toán. Cấu trúc dữ liệu để lưu trữ dữ liệu còn thuật toán là con đường xử lý vấn đề từ đống dữ liệu đó. Và mỗi dự án chúng ta làm đều phải chọn những loại phù hợp nhất để chương trình chạy hiệu quả, tối ưu hiệu năng cho chúng sẽ giúp ta dễ dàng mở rộng và bảo trì code của ta về sau.


Cảm ơn các bạn đã dành ít phút đọc, mình sẽ làm từng loại thuật toán và cấu trúc dữ liệu trong series này.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Đôi chút về cấu trúc dữ liệu và thuật toán

Theo anh Phạm Huy Hoàng (toidicodedao) đã viết trong blog của mình là kiến thức trong ngành IT có 2 loại, một là càng để lâu thì càng cũ, lạc hậu và trở lên vô dụng. Hai là càng để lâu thì càng có giá trị thậm chí ngày càng có giá.

0 0 32

- vừa được xem lúc

Cấu trúc dữ liệu Merkle Tree

Cây Merkle là một cây nhị phân có thứ tự được xây dựng từ một dãy các đối tượng dữ liệu (d1, d2,...,dn) sử dụng hàm băm h. Các “lá” của cây là các giá trị băm h(di) đối với 1 ≤ i ≤ n.

0 0 46

- vừa được xem lúc

Cách xây dựng cấu trúc dữ liệu Stack và Queue.

Mở đầu. Hello các bạn, hôm nay mình sẽ chia sẻ với các bạn cách để có thể tự xây dựng 2 loại cấu trúc dữ liệu stack(ngăn xếp) và queue(hàng đợi) sử dụng mảng trong C++;.

0 0 31

- vừa được xem lúc

Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản

Ở Việt Nam có một nghịch lý ai cũng biết: hầu hết sinh viên ngành CNTT đều đã học cấu trúc dữ liệu và giải thuật, thuộc các môn bắt buộc. Thế nhưng lại rất hiếm khi ứng dụng vào công việc hoặc bị loại

0 0 36

- vừa được xem lúc

Chương 1: Introduction - Analysis of Algorithrms

Trong bài viết này mình sẽ nói về cách chúng ta sẽ sử dụng để phân tích và so sánh các loại thuật toán khác nhau. 1.

0 0 15

- vừa được xem lúc

Chương 1: Introduction - Các khái niệm cơ bản

Lời nói đầu. Trước khi có máy tính, đã có các thuật toán.

0 0 16