Trà đá cùng Dev

Trà đá cùng Dev

Share

06/12/2024

Hot pick 12/12: Tham gia ngay khoá học "Fullstack Python + Vue3/Nuxt3" để nhận được nhiều ưu đãi ngay hôm nay!
Link đăng ký: https://forms.gle/SodUbHEungBS5qP38

Đăng ký tham gia buổi trò chuyện vui cùng T dev 24/10/2024

😘 09:00PM 💣 25/10/2024 có gì hot!!!
👉 Đăng ký tham gia trao đổi IT online ngay tại link:
https://docs.google.com/forms/d/e/1FAIpQLScxFjloq0mVlDEvdGi0lo0e4nZFH-KGEBa6ZlJkuMRcVfppkw/viewform?usp=sf_link

❣️ Trao đổi một số kĩ thuật khi làm việc thực tế.

💞 "Trò chuyện vui cùng dev" là không gian chia sẻ kiến thức, kinh nghiệm lập trình và những câu chuyện thú vị trong thế giới công nghệ. Hãy cùng khám phá, học hỏi, và thư giãn với những cuộc trò chuyện đầy sáng tạo và cảm hứng! "Trò chuyện vui cùng T dev" là không gian chia sẻ kiến thức, kinh nghiệm lập trình và những câu chuyện thú vị trong thế giới công nghệ. Hãy cùng khám phá, học hỏi, và thư giãn với những cuộc trò chuyện đầy sáng tạo và cảm hứng!

Đăng ký tham gia buổi trò chuyện vui cùng T dev Xin chào các bạn!Xin chào các bạn! Để tạo ra những buổi livestream và những buổi học hiệu quả. Mình đang tạo chương trình trò chuyện cùng T để các bạn có thể chủ động học tập và tiếp cận hơn nhé!Để tạo ra những buổi livestream ...

Photos from Trà đá cùng Dev's post 24/07/2024

Chỉ anh/em làm IT mới hiểu.
Làm IT nói chung cũng "Nh.."?

Bàn phím gõ mã, sáng đêm trôi
Cốc cà phê đắng, lòng vẫn vui
Debug mãi miết, dòng code dài
Lập trình viên ngồi, mộng thành đôi
___ thinnd.vn ___

10/07/2024

Tech talk: Không biết các bạn đang dùng ngân hàng như thế nào. Mấy hôm nay mình có một trải nghiệm cực kì tệ hại với 2 ngân hàng mình đang sử dụng. Mỗi lần giao dịch phải xác thực khuôn mặt đến tận dao động từ 40 - 65 lần mới có thể giao dịch được.
Một luật thay đổi làm cho trải nghiệm người dùng đi vào lòng đất...
Các bác vào cho mình xin cảm nhận. Hay do điện thoại mình đểu nên mới bị vậy 😭

: Mong bộ phận IT các ngân hàng nhanh cải tiến chương trình nhận dạng khuôn mặt cho tốt chứ kiểu này thì....

22/03/2024

Code and English
Post 1: Queue

Photos from Trà đá cùng Dev's post 26/02/2024

[Post 6] - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
*** Thuật toán sắp xếp ***
[Kết thúc nội dung về thuật toán tìm kiếm]

6. Thuật toán "Sắp xếp heap (Heap Sort)"

Thuật toán sắp xếp Heap (Heap Sort) là một thuật toán sắp xếp dựa trên cấu trúc dữ liệu heap. Thuật toán hoạt động bằng cách tạo một heap từ mảng ban đầu, sau đó lấy ra các phần tử lớn nhất một cách tuần tự để sắp xếp chúng. Heap được sử dụng để duy trì thứ tự của các phần tử trong mảng.

Thuật toán sắp xếp Heap:

Bước 1: Xây dựng một heap từ mảng ban đầu.
Chuyển đổi mảng ban đầu thành một heap. Điều này có thể được thực hiện bằng cách sử dụng các phép toán heapify để đảm bảo tính chất heap (tính chất gốc: giá trị của một nút không lớn hơn giá trị của các nút con của nó).

Bước 2: Lấy ra phần tử lớn nhất và tái xây dựng heap.
Lấy ra phần tử lớn nhất từ đỉnh heap (đỉnh của heap là phần tử lớn nhất).
Thay thế phần tử lấy ra bằng phần tử cuối cùng của heap.
Tái xây dựng heap bằng cách thực hiện lại quá trình heapify từ đỉnh xuống dưới (từ đỉnh mới đến các nút lá).

Bước 3: Lặp lại bước 2 cho đến khi tất cả các phần tử được lấy ra.
Lặp lại bước 2 cho đến khi tất cả các phần tử đã được lấy ra từ heap. Mỗi lần lặp, phần tử lớn nhất sẽ được lấy ra và đưa vào cuối mảng.

4. Kết quả: Sau khi hoàn thành quá trình lấy ra các phần tử từ heap, mảng sẽ được sắp xếp theo thứ tự tăng dần.

Thuật toán sắp xếp Heap có độ phức tạp thời gian trung bình là O(n log n), với n là số phần tử trong mảng. Điều này đảm bảo hiệu suất tốt và làm cho thuật toán trở thành một lựa chọn phổ biến cho việc sắp xếp mảng.

=>>> Code python minh họa:

Photos from Trà đá cùng Dev's post 26/02/2024

[Post 5] - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
*** Thuật toán sắp xếp ***

5. Thuật toán "Sắp xếp trộn (Merge Sort)"

Thuật toán sắp xếp trộn (Merge Sort) là thuật toán hoạt động bằng cách chia mảng thành các nửa, sắp xếp các nửa đó độc lập và sau đó ghép các nửa đã sắp xếp lại theo thứ tự đúng. Đây là một ví dụ điển hình của thuật toán chia để trị (divide and conquer).

* Thuật toán sắp xếp trộn:

Bước 1: Chia mảng thành hai nửa.
Chia mảng ban đầu thành hai phần bằng nhau hoặc gần bằng nhau. Điểm chia thường là giữa mảng.

Bước 2: Đệ quy sắp xếp các nửa đã chia.
Áp dụng thuật toán sắp xếp trộn cho nửa đầu của mảng.
Áp dụng thuật toán sắp xếp trộn cho nửa sau của mảng.
Quá trình đệ quy này được lặp lại cho đến khi mỗi nửa chỉ còn một phần tử.

Bước 3: Ghép các nửa đã sắp xếp lại.
So sánh các phần tử đầu tiên của hai nửa.
Chọn phần tử nhỏ hơn và đặt nó vào mảng kết quả.
Tiếp tục so sánh và đặt các phần tử tiếp theo vào mảng kết quả cho đến khi một nửa được sử dụng hết.
Đặt các phần tử còn lại của nửa còn lại vào mảng kết quả.

4. Kết quả: Sau khi hoàn thành quá trình ghép nửa, mảng sẽ được sắp xếp theo thứ tự tăng dần.

Thuật toán sắp xếp trộn có độ phức tạp thời gian trung bình là O(n log n), với n là số phần tử trong mảng. Điều này đảm bảo hiệu suất tốt và làm cho thuật toán trở thành một lựa chọn phổ biến cho việc sắp xếp mảng.

=>>> Code minh họa:

26/02/2024

[Post 4] - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
*** Thuật toán sắp xếp ***

4. Thuật toán "Sắp xếp nhanh (Quick Sort)"
QuickSort là một thuật toán sắp xếp sử dụng chiến lược chia để trị để sắp xếp một mảng. Nó thực hiện điều này bằng cách chọn một phần tử pivot và sau đó sắp xếp các giá trị lớn hơn nó ở một bên và các giá trị nhỏ hơn nó ở một bên khác, sau đó lặp lại các bước này cho đến khi mảng đã được sắp xếp. Nó hữu ích khi sắp xếp các tập dữ liệu lớn.

* Thuật toán sắp xếp nhanh:

Bước 1: Chọn một phần tử từ mảng làm pivot.
Phần tử pivot có thể được chọn ngẫu nhiên hoặc theo một quy tắc cụ thể (ví dụ: phần tử ở giữa mảng).

Bước 2: Phân đoạn mảng thành hai phần.
Lặp qua từng phần tử trong mảng và so sánh nó với pivot.
Nếu phần tử nhỏ hơn pivot, đặt nó vào phần tử nhỏ hơn.
Nếu phần tử lớn hơn pivot, đặt nó vào phần tử lớn hơn.
Nếu phần tử bằng pivot, có thể đặt nó vào bất kỳ phần nào (nhưng thường là phần tử nhỏ hơn hoặc lớn hơn).

Bước 3: Đệ quy sắp xếp các phần đã phân đoạn.
Áp dụng thuật toán sắp xếp nhanh cho phần tử nhỏ hơn pivot (gọi là phần tử con trái của pivot).
Áp dụng thuật toán sắp xếp nhanh cho phần tử lớn hơn pivot (gọi là phần tử con phải của pivot).
Quá trình đệ quy này được lặp lại cho đến khi mỗi phần tử được sắp xếp riêng lẻ.

Bước 4: Kết hợp các phần đã sắp xếp lại thành một mảng hoàn chỉnh.
Kết hợp phần tử con trái của pivot, pivot và phần tử con phải của pivot để tạo thành một mảng hoàn chỉnh.

5. Kết quả: Sau khi hoàn thành quá trình đệ quy và kết hợp các phần đã sắp xếp, mảng sẽ được sắp xếp theo thứ tự tăng dần.

=>>> Code minh họa:

26/02/2024

[Post 3] - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
*** Thuật toán sắp xếp ***
3. Thuật toán "Sắp xếp chọn (Selection Sort)"

Thuật toán sắp xếp chọn (Selection Sort) là một thuật toán sắp xếp đơn giản, hoạt động bằng cách tìm kiếm phần tử nhỏ nhất trong mảng và đổi chỗ nó với phần tử ở vị trí đầu tiên. Sau đó, thuật toán tiếp tục tìm kiếm phần tử nhỏ nhất trong phần còn lại của mảng và đổi chỗ nó với phần tử ở vị trí thứ hai. Quá trình này được lặp lại cho đến khi toàn bộ mảng được sắp xếp.

* Thuật toán sắp xếp chọn:

* Bước 1: Lặp qua từng phần tử trong mảng, bắt đầu từ phần tử đầu tiên.
Gán giá trị của phần tử hiện tại là phần tử nhỏ nhất (min) và gán chỉ số của phần tử này là min_index.

* Bước 2: Tìm phần tử nhỏ nhất trong phần tử con còn lại của mảng.
Lặp qua từng phần tử trong phần tử con còn lại của mảng (bắt đầu từ phần tử tiếp theo sau phần tử hiện tại).
So sánh phần tử hiện tại với phần tử nhỏ nhất (min). Nếu phần tử hiện tại nhỏ hơn phần tử nhỏ nhất, cập nhật giá trị của phần tử nhỏ nhất và chỉ số của nó.

* Bước 3: Hoán đổi phần tử nhỏ nhất với phần tử đầu tiên của phần tử con còn lại.
Sau khi kết thúc vòng lặp tìm kiếm ở bước 2, có được phần tử nhỏ nhất và chỉ số của nó.
Hoán đổi phần tử nhỏ nhất với phần tử đầu tiên của phần tử con còn lại của mảng. Điều này đảm bảo rằng phần tử nhỏ nhất đã được đặt đúng vị trí.

* Bước 4: Lặp lại quá trình cho đến khi toàn bộ mảng được sắp xếp.
Tăng chỉ số của phần tử hiện tại lên 1 (để xét phần tử tiếp theo trong mảng).
Lặp lại các bước từ bước 1 đến bước 3 cho phần tử tiếp theo.

* Kết quả: Sau khi hoàn thành quá trình lặp lại, mảng sẽ được sắp xếp theo thứ tự tăng dần.

Thuật toán sắp xếp chọn có độ phức tạp thời gian là O(n^2), với n là số phần tử trong mảng. Tuy nhiên, thuật toán này có ưu điểm là đơn giản và dễ hiểu. Nó thích hợp cho việc sắp xếp các mảng nhỏ hoặc khi số lượng phần tử trong mảng không lớn.

Code minh họa:

19/02/2024

[Post 2] - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
*** Thuật toán sắp xếp ***

2. Thuật toán "Sắp xếp chèn (Insertion Sort)"
Thuật toán sắp xếp chèn (Insertion Sort) là một thuật toán đơn giản được sử dụng để sắp xếp các phần tử trong một danh sách hoặc mảng. Thuật toán này hoạt động bằng cách xem xét từng phần tử trong danh sách và chèn nó vào đúng vị trí trong phần đã được sắp xếp (thường là một mảng con bên trái của phần tử đang xét).

* Thuật toán (Xét bài toán sắp xếp tăng dần):

Bước 1: Bắt đầu từ phần tử thứ hai (vị trí 1) của danh sách, vì phần tử đầu tiên được coi là một danh sách đã sắp xếp với một phần tử.

Bước 2: So sánh phần tử hiện tại với các phần tử trong danh sách đã sắp xếp, bắt đầu từ phần tử cuối cùng của danh sách đã sắp xếp và di chuyển về phía trước.

Bước 3: Nếu phần tử hiện tại nhỏ hơn phần tử được so sánh, di chuyển phần tử được so sánh sang phải một vị trí để tạo ra một vị trí trống.

Bước 4: Tiếp theo, chèn phần tử hiện tại vào vị trí trống đó.

Bước 5: Lặp lại quá trình này cho đến khi phần tử hiện tại không còn nhỏ hơn các phần tử được so sánh hoặc đã đến đầu danh sách.

Bước 6: Tiếp tục quá trình cho tới khi tất cả các phần tử đã được sắp xếp.

* Mặc dù Insertion Sort không phải là thuật toán hiệu quả nhất với các tập dữ liệu lớn, nhưng nó hoạt động tốt trên các danh sách nhỏ hoặc đã gần sắp xếp, và nó cũng có thể được sử dụng để sắp xếp trực tiếp trên danh sách mà không cần bộ nhớ phụ.

* Thuật toán này có độ phức tạp trung bình là O(n^2), với n là số lượng phần tử trong danh sách. Trong trường hợp tốt nhất, khi danh sách đã được sắp xếp, độ phức tạp là O(n), vì mỗi phần tử chỉ cần so sánh với các phần tử đã sắp xếp. Trong trường hợp xấu nhất, khi danh sách được sắp xếp ngược chiều, độ phức tạp vẫn là O(n^2). Tuy nhiên, Insertion Sort thường hiệu quả hơn Bubble Sort trong nhiều trường hợp do nó thực hiện ít phép so sánh và đổi chỗ hơn.

=>> Code minh họa thuật toán:

15/02/2024

[Post 1] - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
*** Thuật toán sắp xếp ***
[Bắt đầu nội dung về thuật toán tìm kiếm]

1. Thuật toán "Sắp xếp nổi bọt (Bubble Sort)"

* Thuật toán sắp xếp nổi bọt (Bubble Sort) là một thuật toán đơn giản được sử dụng để sắp xếp các phần tử trong một danh sách hoặc mảng. Thuật toán này hoạt động bằng cách lặp qua mảng, so sánh các cặp phần tử liên tiếp và đổi chỗ chúng nếu cần, sao cho phần tử lớn hơn sẽ nổi lên (di chuyển) lên trên cùng và phần tử nhỏ hơn sẽ chìm (di chuyển) xuống dưới cùng. Quá trình này được lặp lại cho đến khi không còn cặp phần tử nào cần đổi chỗ.

* Thuật toán (Xét bài toán sắp xếp tăng dần):

1. Bắt đầu từ đầu mảng, lặp qua từng phần tử trong mảng.
2. So sánh phần tử hiện tại với phần tử kế tiếp của nó. Nếu phần tử hiện tại lớn hơn phần tử kế tiếp, đổi chỗ chúng.
3. Di chuyển tới phần tử tiếp theo và lặp lại quá trình so sánh và đổi chỗ cho đến khi bạn đến được cuối mảng.
4. Khi bạn đã đến cuối mảng, phần tử lớn nhất đã nổi lên (di chuyển) lên trên cùng.
5. Lặp lại các bước trên cho đến khi không còn phần tử nào cần đổi chỗ.

* Thuật toán này được gọi là "nổi bọt" bởi vì trong quá trình sắp xếp, phần tử lớn nhất "nổi" lên như các bọt trong nước.

* Thuật toán này dễ hiểu và cài đặt, nhưng hiệu suất của nó không tốt khi xử lý các mảng lớn với số lượng phần tử lớn. Trong trường hợp xấu nhất, khi mảng đã được sắp xếp ngược chiều, thuật toán này có độ phức tạp là O(n^2), nơi n là số lượng phần tử trong mảng. Điều này là do trong trường hợp này, mỗi phần tử đều phải di chuyển đến vị trí cuối cùng của mảng. Tuy nhiên, trong trường hợp tốt nhất, khi mảng đã được sắp xếp, độ phức tạp chỉ là O(n), với n là số lượng phần tử trong mảng, do không cần thực hiện bất kỳ phép đổi chỗ nào.

____________________________

Ví dụ minh họa bằng lời dẫn:

** Giả sử chúng ta có một mảng gồm các số nguyên sau đây: [5, 3, 8, 4, 2]. Chúng ta sẽ sắp xếp mảng này bằng thuật toán Bubble Sort.

Bước 1: Bắt đầu từ đầu mảng, so sánh các cặp phần tử liên tiếp và đổi chỗ nếu cần.

So sánh 5 và 3: Không cần đổi chỗ vì 5 lớn hơn 3.
So sánh 5 và 8: Không cần đổi chỗ vì 5 nhỏ hơn 8.
So sánh 8 và 4: Đổi chỗ vì 8 lớn hơn 4.
So sánh 8 và 2: Đổi chỗ vì 8 lớn hơn 2.
Sau bước này, mảng trở thành [5, 3, 4, 2, 8].

Bước 2: Lặp lại quá trình cho đến khi không còn phần tử nào cần đổi chỗ.

So sánh 5 và 3: Đổi chỗ vì 5 lớn hơn 3.
So sánh 5 và 4: Đổi chỗ vì 5 lớn hơn 4.
So sánh 5 và 2: Đổi chỗ vì 5 lớn hơn 2.
So sánh 5 và 8: Không cần đổi chỗ vì 5 nhỏ hơn 8.
Sau bước này, mảng trở thành [3, 4, 2, 5, 8].

Bước 3: Lặp lại quá trình cho đến khi không còn phần tử nào cần đổi chỗ.

So sánh 3 và 4: Không cần đổi chỗ vì 3 nhỏ hơn 4.
So sánh 4 và 2: Đổi chỗ vì 4 lớn hơn 2.
So sánh 4 và 5: Không cần đổi chỗ vì 4 nhỏ hơn 5.
So sánh 5 và 8: Không cần đổi chỗ vì 5 nhỏ hơn 8.
Sau bước này, mảng trở thành [3, 2, 4, 5, 8].

Bước 4: Lặp lại quá trình cho đến khi không còn phần tử nào cần đổi chỗ.

So sánh 3 và 2: Đổi chỗ vì 3 lớn hơn 2.
So sánh 3 và 4: Không cần đổi chỗ vì 3 nhỏ hơn 4.
So sánh 4 và 5: Không cần đổi chỗ vì 4 nhỏ hơn 5.
So sánh 5 và 8: Không cần đổi chỗ vì 5 nhỏ hơn 8.
Sau bước này, mảng trở thành [2, 3, 4, 5, 8].

Bước 5: Lặp lại quá trình cho đến khi không còn phần tử nào cần đổi chỗ.

So sánh 2 và 3: Không cần đổi chỗ vì 2 nhỏ hơn 3.
So sánh 3 và 4: Không cần đổi chỗ vì 3 nhỏ hơn 4.
So sánh 4 và 5: Không cần đổi chỗ vì 4 nhỏ hơn 5.
So sánh 5 và 8: Không cần đổi chỗ vì 5 nhỏ hơn 8.
Sau bước này, mảng vẫn giữ nguyên [2, 3, 4, 5, 8].

Vì không còn phần tử nào cần đổi chỗ, quá trình sắp xếp nổi bọt kết thúc và mảng đã được sắp xếp theo thứ tự tăng dần.

Code minh họa trong ảnh:

Photos from Trà đá cùng Dev's post 09/02/2024

😘😘😘 2024 IT quyết giàu 😍😍😍
💻Trong tiếng chúc tết ngát hương hoa nở. Lập trình viên thân yêu, tương lai hãy mở. Dòng code sáng tạo, mơ ước sẽ thành hiện thực. Hạnh phúc và thành công, luôn đồng hành bên bạn trăm phần.

💕Gia đình sum họp, tình thân thắm thiết đậm đà. Bạn bè thân thiết, niềm vui mãi trọn đầy. Chúc mừng năm mới, đón may mắn và phúc lộc. Tết đến, xuân về, niềm vui ngập tràn khắp mọi nhà. Chúc mừng xuân mới, hạnh phúc muôn nơi. Năm mới an khang, phát tài, phát lộc 🥰🥰🥰🥰🥰

Want your school to be the top-listed School/college in Hanoi?

Click here to claim your Sponsored Listing.

Location

Address


136 Xuân Thủy, Cầu Giấy
Hanoi