

Thuật toán là một chuỗi các bước có trình tự rõ ràng để giải quyết một vấn đề. Trong lập trình C++, thuật toán đóng vai trò quan trọng trong việc phát triển phần mềm hiệu quả và tối ưu. Do đó, việc hiểu được các c++ algorithm cơ bản là nền tảng cho bất kỳ ai muốn bước vào thế giới lập trình. Khái quát về thuật toán C++ C++ là một ngôn ngữ lập trình hướng đối tượng và được sử dụng rộng rãi trong các ứng dụng khoa học máy tính, game và hệ thống nhúng. Với sự phát triển của công nghệ, việc tối ưu hóa và xử lý dữ liệu trở thành một yếu tố quan trọng trong lập trình và đây chính là lý do tại sao thuật toán lại trở nên cực kỳ quan trọng trong lập trình C++. Trong C++, thuật toán được sử dụng để giải quyết các vấn đề liên quan đến xử lý dữ [...]
Read more →
Bài viết được sự cho phép bởi tác giả Sơn Dương Hôm nay chúng ta quay trở lại với series thuật toán chuyên sâu nhé. Mặc dù, nói tới thuật toán là mình cảm thấy đau đầu vì tính phức tạp của nó, nhưng khi đã thẩm thấu xong một thuật toán, bản thân lại cảm thấy vô cùng thích thú Bài viết hôm nay, mình sẽ đề cập tới thuật toán tham lam (Greedy Algorithms) – nghe tên thôi đã thấy tham rùi. Cùng với thuật toán “Chia để trị – Divide and Conquer”, thuật toán tham lam là một trong những thuật toán thường xuyên xuất hiện trong các câu hỏi phỏng vấn tuyển dụng. Thật là thiết sót nếu bạn lại bỏ lỡ không biết về thuật toán này. Thuật toán tham lam là gì? Hiểu một cách “nông dân” nhất có thể về thuật toán này như sau: Khi bạn gặp một bài [...]
Read more →
Bài viết được sự cho phép của tác giả Huy Trần Đối với lĩnh vực Frontend nói riêng, chuyện học hay luyện các kĩ năng phân tích thiết kế thuật toán là một kĩ năng bị xem nhẹ nhất. Vì lý do đơn giản, chúng ta không thấy nhiều về tính ứng dụng của nó vào công việc thực tế. Nhưng đây là sai lầm lớn nhất của đại đa số Frontend Developers. Trên thực tế, chúng ta phải đối mặt với các vấn đề cần phải sử dụng thuật toán, và cần phải vận dụng các kĩ năng phân tích thiết kế thuật toán gần như là hằng ngày. Nhưng rất ít khi chúng ta nhận ra. Đây cũng là lý do mà mình viết sê-ri Algorithm in Frontend này, xoay quanh những kinh nghiệm thực tế mà mình đã gặp phải trong thời gian làm việc, phần lớn là trong hai lĩnh vực sản phẩm mình đã/đang [...]
Read more →
Bài viết được sự cho phép của tác giả Huy Trần Tiếp tục với sê ri Algorithm in Frontend, kì này nói về một loại cấu trúc dữ liệu được dùng thường xuyên trên frontend, đó là Kiểu dữ liệu dạng cây (tree). Nhắc đến cây thì hẳn chúng ta nghĩ ngay đến DOM và các thao tác trên đó, ví dụ như tìm kiếm một element trên DOM, thêm/xóa element,... tuy nhiên các thao tác này chúng ta thường sử dụng DOM API có sẵn của trình duyệt và bài này cũng không có ý định nói đến phần đó [irp posts="47940" name="Algorithm Visualization"] [irp posts="47892" name="Algorithm in Frontend - Kỳ 3: Hashmap"] 1. Bài toán cần giải quyết Thực ra đây là một câu hỏi phỏng vấn cho vị trí Frontend Engineer tại công ty G cũng khá là có tiếng tăm (vì họ bắt mình ký NDA không được tiết lộ nội dung buôi phỏng vấn, nhưng mà để viết bài này thì phải lộ đề rồi, nê [...]
Read more →
Bài viết được sự cho phép của tác giả Huy Trần Algorithm Visualization là kĩ thuật hình tượng hóa quá trình hoạt động của một thuật toán, chúng ta thường thực hiện nó bằng nhiều cách khác nhau như: viết, vẽ, lập bảng giá trị,... Tuần vừa rồi mình có làm một project nho nhỏ để giải trí, vừa để thực hành xem cách mà người ta thực hiện việc visualization nó như thế nào. Mình sử dụng phương pháp được giới thiệu bởi Chris Wellons qua bài viết Inspecting C's qsort Through Animation. [irp posts="47892" name="Algorithm in Frontend - Kỳ 3: Hashmap"] [irp posts="16373" name="Tìm kiếm siêu nhanh sử dụng Algolia"] Xem thêm tuyển dụng Designer hấp dẫn trên TopDev Các bạn có thể tham khảo source code tại đây: https://github.com/huytd/bubble-sort-visualized Ý tưởng cơ bản sẽ là: In trạng thái của input ra sau mỗi bước của thuật toán. In bằng cách nào thì còn tùy thuộc vào kết quả mà bạn [...]
Read more →
Bài viết được sự cho phép của tác giả Huy Trần Hôm nay nói về một ứng dụng của Hashmap trong việc optimize một số thuật toán thường gặp trên Frontend. Giả sử có một mảng languages lưu danh sách các ngôn ngữ lập trình: const languages = ["c++", "java", "javascript", "ruby", "rust", "golang"]; Và một hàm getLanguages nhận vào một mảng input, trả ra mảng gồm các phần tử vừa có trong input vừa có trong languages (nói theo kiểu tập hợp thì là phép giao hai tập input∩languagesinput∩languages): const normalize = text => text.trim().toLowerCase(); const getLanguages = (input) => { return languages.filter(searchLang => { return !(input.findIndex(inputLang => normalize(inputLang) === normalize(searchLang)) === -1); }); }; Về mục đích của hàm trên, thì hãy tưởng tượng bạn đang làm một trang web về tuyển dụng, cho phép user (là ứng viên) nhập vào các ngôn ngữ mình sử dụng, có người sẽ nhập Ruby, có người nhập ruBy, ruby,... hàm trên sẽ filter các input sai lệch đó và trả về input đúng với database nhất. [ [...]
Read more →