Tìm kiếm tuyến tính [serial về các thuật toán cơ bản trong lập trình]

Tìm kiếm tuyến tính (linear search) còn có tên khác là tìm kiếm tuần tự (sequential search) là một kỹ thuật tìm kiếm rất cơ bản và dễ hiểu trong lập trình, đây là kỹ thuật mà có khi bạn đã áp dụng rồi khi thậm chí chưa đọc lý thuyết về nó. Tìm kiếm tuyến tính thực hiện tìm kiếm bằng cách duyệt qua từng phần tử trong mảng, và so sánh nó với giá trị cần tìm kiếm. Vấn đề với tìm kiếm tuyến tính là nó không có hiệu suất tốt trong các mảng lớn (ví dụ …

Đọc thêm

Tìm kiếm nhị phân [serial về các thuật toán cơ bản trong lập trình]

Tìm kiếm nhị phân (binary search) là một trong các thuật toán cơ bản trong lập trình mà chúng ta cũng cần phải biết. Ưu điểm của nó là tốc độ tốt (ví dụ khi so với tìm kiếm tuyến tính / tuần tự) trên các mảng có số lượng phần tử lớn, ngoài ra, tìm kiếm nhị phân cũng dễ hiểu nữa. Một yêu cầu trong tìm kiếm nhị phân là mảng mà nó cần tìm kiếm cần phải được sắp xếp rồi (chẳng hạn bằng quick sort). Ví dụ, hãy tìm vị trí của giá trị 75 trong …

Đọc thêm

Hiểu thêm về đệ quy thông qua một số ví dụ [serial về các thuật toán cơ bản trong lập trình]

Ở trong hai bài viết trước về sắp xếp trộn (merge sort) và sắp xếp nhanh (quick sort), chúng ta đã thấy được sức mạnh của đệ quy (recursion), đặc biệt là với sắp xếp nhanh, khi hiệu suất của nó là vượt trội, điều rất quan trọng khi xử lý dữ liệu lớn. Tuy nhiên đệ quy không quá dễ hiểu, và tôi hy vọng qua bài viết này chúng ta sẽ nhìn rõ hơn về nó. Tổng quát, một bài toán được giải quyết bằng đệ quy nếu nó có hai đặc điểm sau: Chúng ta sẽ phải …

Đọc thêm

Thuật toán sắp xếp trộn (merge sort), giải thích kèm ví dụ trong PHP [serial về các thuật toán cơ bản trong lập trình]

Thuật toán tiếp theo mà chúng ta sẽ cùng tìm hiểu sau khi đi qua 2 thuật toán sắp xếp nổi bọt (bubble sort) và sắp xếp nhanh (quick sort) là sắp xếp trộn (merge sort). Sắp xếp trộn có nhiều điểm tương đồng với sắp xếp nhanh, khi nó cũng sử dụng đệ quy làm phương thức. Về tốc độ, bên lập trình nói rằng, trong đa số trường hợp nó nhanh hơn sắp xếp nổi bọt, và tương đương sắp xếp nhanh. Bài toán: một dãy số không theo thứ tự 4, 2, 9, 7, 3, 1, 6, …

Đọc thêm

Thuật toán sắp xếp nhanh (quick sort), giải thích kèm ví dụ trong PHP [serial về các thuật toán cơ bản trong lập trình]

Tên nghe đã thấy hấp dẫn rồi đúng không các bạn, dân lập trình nói rằng, trên các mảng ngẫu nhiên và có số lượng tương đối, quick sort có tốc độ sắp xếp tốt hơn đáng kể so với bubble sort (sắp xếp nổi bọt) và tương đương merge sort (sắp xếp trộn), cụ thể số bước cần thiết của quick sort để sắp xếp hoàn thành yêu cầu là ít hơn [độ phức tạp của thuật toán là O(n log n)]. Giờ chúng ta sẽ cùng tìm hiểu xem nó như thế nào nhé. Bài toán, cho dãy …

Đọc thêm

Thuật toán sắp xếp nổi bọt (bubble sort), giải thích kèm ví dụ trong PHP [serial về các thuật toán cơ bản trong lập trình]

Bài toán: chúng ta có một tập hợp các phần tử với các giá trị khác nhau, nhưng không theo thứ tự nào cả. Yêu cầu: sắp xếp lại thứ tự của nó từ nhỏ đến lớn. Lời ngỏ: hầu hết các ngôn ngữ lập trình đều có sẵn các hàm để giải quyết những bài toán cơ bản kiểu như thế này, vấn đề ở đây là chúng ta cần luyện tư duy, sử dụng các hàm cơ bản hơn để đạt yêu cầu đề ra. Ngôn ngữ lập trình nào ở đây không quá quan trọng, bạn nắm …

Đọc thêm

Khai bút đầu năm với hướng dẫn về cách tạo ảnh bằng AI thông qua thuật toán của Stable Diffusion

Chắc chắn tạo ảnh bằng AI sẽ ngày càng phát triển trong thời gian tới đây, có 2 nguyên nhân chủ yếu: Tôi sử dụng ứng dụng online nightcafe.studio trong hướng dẫn này, nightcafe.studio (NCS) có ưu điểm là hàng ngày cấp miễn phí 5 credit, nên bạn sẽ không tốn tiền để mua nếu chỉ có nhu cầu tạo 10 – 20 ảnh mỗi ngày, xét ra thì số lượng đó cũng đủ cho đa số người dùng thông thường. Ngoài ra NCS có các tính năng tùy biến chuyên sâu hơn đa số các ứng dụng tương tự. …

Đọc thêm

Phiên bản mới của bầu.com (RC2) ra mắt

Sau khoảng hai tháng tích cực cải thiện, hôm nay 8/1/2023, bầu.com (chương trình gợi ý tên hay cho bé) chính thức ra mắt phiên bản 2, với một số thay đổi quan trọng, trong đó tập trung vào phân tích sâu hơn đệm – tên người dùng nhập vào. Những cải tiến chủ yếu bao gồm: Cập nhật: ngày 25/1/23, chương trình được cập nhật thêm một chút với việc thêm 15% dữ liệu mẫu, đưa thêm ảnh đại diện, tăng tính ngẫu nhiên trong gợi ý để đưa ra các tên ít phổ biến hơn giúp hạn chế …

Đọc thêm

Làm thế nào để không vi phạm bản quyền liên quan đến hình ảnh

Trong vấn đề bản quyền, rất dễ há miệng mắc quai, nếu không để ý. Nghĩa là hầu hết ta áp dụng tiêu chuẩn kép rất tinh quái nhưng không thông minh gì cho lắm (có cả tôi nữa!): Hôm nay tôi sẽ bắt đầu bằng một vấn đề mà rất nhiều người quản trị web, người làm nội dung, các nhà thiết kế, blogger…hay mắc phải đó là vi phạm bản quyền liên quan đến hình ảnh. Hình ảnh là thứ rất dễ lấy nhưng không dễ để làm ra nếu bạn cứ gò bó về ý tưởng hình …

Đọc thêm

Ý tưởng về một nơi lưu trữ danh mục sách hay

Sách mãi là nguồn thông tin quý giá, gánh vác vai trò người thầy cho chúng ta trong hành trình học tập suốt đời. Nhưng có một rắc rối: Có quá nhiều sách để chọn lựa, và bạn không biết nên đọc cuốn nào? Việc chọn sách là một vấn đề y như việc chọn film để xem vậy (bạn có 2 tiếng để xem, và bạn mất một tiếng để chọn!). Danh mục mà tôi định lập ra đơn thuần chỉ liệt kê chứ không phải nơi để tải dữ liệu về, vì như thế sẽ vi phạm bản …

Đọc thêm