Học Cấu Trúc Dữ Liệu Và Giải Thuật
NỘI DUNG BÀI VIẾT
Ngôn ngữ lập trình thì cũng như tiếng Việt hay tiếng Anh, biết thì nói chuyện được sơ sơ, nói và viết được các nội dung đơn giản. Cấu trúc dữ liệu thì như ngữ pháp, biết cách dùng rồi thì viết câu sẽ chuẩn hơn, ai cũng hiểu, không hiểu nhầm.
Còn giải thuật thì như là nội dung nói (hoặc viết) vậy, trong đó có cách tổ chức bài nói (hoặc bài viết), nói gì, ý trước ý sau ra sao, phân tích, lập luận thế nào…
Giá như ngày còn đi học tôi chăm chỉ hơn và đào sâu nghiên cứu về Cấu trúc dữ liệu & giải thuật thì hôm nay đã khác…
Câu chuyện ngày đầu đi làm…
Hôm nay là ngày đầu tiên tôi đi đi làm ở một công ty công nghệ X, thật hồi hộp như ngày đầu thi đại học.
Tôi được chào đón nồng nhiệt bởi anh technical lead của đơn vị. Anh nhìn tôi, mỉm cười:
– Hồi sinh viên, em đã được học nhiều về Cấu trúc dữ liệu và giải thuật chứ
– Dạ có ạ
– Em có thể trình bày cho anh về Lý thuyết đồ thị, cấu trúc dữ liệu cây được không??
– Dạ hồi sinh viên em học chỉ để lấy điểm, nên thì qua xong là … quên hết rồi ạ
– Sinh viên bây giờ thiếu quá nhiều kĩ năng làm việc, em cần phải được đào tạo lại từ đầu. Ngày mai anh sẽ dậy cho em những kiến thức cơ bản về Cấu trúc dữ liệu và giải thuật. Đây là những kiến thức nền tảng mà bất kì ai cũng cần phải nắm vững khi làm trong ngành CNTT.
Ngay cả những tập đoàn lớn nhưng Amazon, hay Google khi phỏng vấn họ cũng hỏi em những câu hỏi về lĩnh vực này
Cấu trúc dữ liệu & giải thuật một cách dễ hiểu là…
stack
, tree
cho tới lý thuyết đồ thị, kĩ thuật duyệt cây nhị phân, duyệt đồ thị…Array
public class TestArray {
public static void main(String[] args) {
// Declare array
string[] myLoveList = {'Minh','Nam', 'Nguyen', 'Hung'};
// Print all the array elements
for (int i = 0; i < myLoveList.length; i++) {
System.out.println(myLoveList[i] + " ");
}
// Choose a lover : Nam
System.out.println(myLoveList[1] + " ");
}
}
Ưu điểm của mảng
Nhược điểm của mảng
LinkedList
- Linked List Basic
- Doubly Linked List
- Circular Linked List
Linked List Basic (Danh sách liên kết đơn)
- Link (liên kết): mỗi link của một Danh sách liên kết có thể lưu giữ một dữ liệu được gọi là một phần tử.
- Next: Mỗi liên kết của một Danh sách liên kết chứa một link tới next link được gọi là Next.
- First: một Danh sách liên kết bao gồm các link kết nối tới first link được gọi là First
// A simple Java program to introduce a linked list
class LinkedList
{
Node head; // head of list
/* Linked list Node. This inner class is made static so that
main() can access it */
static class Node {
String data;
Node next;
Node(String d) { data = d; next=null; } // Constructor
}
/* method to create a simple linked list with 3 nodes*/
public static void main(String[] args)
{
/* Start with the empty list. */
LinkedList llist = new LinkedList();
llist.head = new Node('Nam');
Node second = new Node('Minh');
Node third = new Node('Trung');
/* Three nodes have been allocated dynamically.
We have refernces to these three blocks as first,
second and third
llist.head second third
| | |
| | |
+----+------+ +----+------+ +----+------+
| Nam | null | | Minh | null | | Trung | null |
+----+------+ +----+------+ +----+------+ */
llist.head.next = second; // Link first node with the second node
/* Now next of first Node refers to second. So they
both are linked.
llist.head second third
| | |
| | |
+----+------+ +----+------+ +----+------+
| Nam | o----->| Minh | null | | Trung | null |
+----+------+ +----+------+ +----+------+ */
second.next = third; // Link second node with the third node
/* Now next of second Node refers to third. So all three
nodes are linked.
llist.head second third
| | |
| | |
+----+------+ +----+------+ +----+------+
| Nam | o---->| Minh | o--- ->| Trung | null |
+----+------+ +----+------+ +----+------+ */
}
}
Ưu điểm
Nhược điểm
Nguồn: codelearn.io
Leave a Reply