hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Cấu trúc dữ liệu và giải thuật
  • Thuật toán tìm kiếm
Thuật toán tìm kiếm tuần tự – linear search

Thuật toán tìm kiếm tuần tự – linear search

  • 23-09-2024
  • Toanngo92
  • 0 Comments

Mục lục

  • Giới Thiệu
  • Ý Tưởng
  • Ví Dụ
  • Đánh Giá Thuật Toán Tìm Kiếm Tuần Tự
  • Cách sử dụng:

Giới Thiệu

Thuật toán Tìm kiếm Tuần tự (Linear Search) là một trong những thuật toán tìm kiếm đơn giản và cơ bản nhất trong lập trình. Thuật toán này được sử dụng để tìm một phần tử cụ thể trong danh sách hoặc mảng bằng cách duyệt qua từng phần tử từ đầu đến cuối. Linear Search không yêu cầu danh sách phải được sắp xếp, làm cho nó rất dễ triển khai và sử dụng trong nhiều tình huống khác nhau.

Ý Tưởng

Thuật toán Tìm kiếm Tuần tự hoạt động bằng cách kiểm tra từng phần tử trong danh sách một cách tuần tự để tìm phần tử mục tiêu. Nếu phần tử mục tiêu được tìm thấy, thuật toán trả về chỉ số của nó; nếu không, thuật toán tiếp tục kiểm tra cho đến khi hết danh sách. Nếu phần tử không có trong danh sách, thuật toán sẽ báo không tìm thấy.

Ví Dụ

Dưới đây là một ví dụ về thuật toán Tìm kiếm Tuần tự được triển khai bằng Java:

public class LinearSearchExample {
    // Phương thức thực hiện tìm kiếm tuần tự
    public static int linearSearch(int[] arr, int target) {
        // Duyệt qua từng phần tử trong mảng
        for (int i = 0; i < arr.length; i++) {
            // So sánh phần tử hiện tại với mục tiêu
            if (arr[i] == target) {
                return i; // Trả về chỉ số của phần tử nếu tìm thấy
            }
        }
        return -1; // Trả về -1 nếu không tìm thấy phần tử mục tiêu
    }

    // Phương thức để in mảng
    public static void printArray(int[] arr) {
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        int[] array = {34, 7, 23, 32, 5};
        int target = 23;

        System.out.println("Mảng ban đầu:");
        printArray(array);

        int index = linearSearch(array, target);

        if (index != -1) {
            System.out.println("Phần tử " + target + " được tìm thấy tại chỉ số " + index);
        } else {
            System.out.println("Phần tử " + target + " không được tìm thấy trong mảng.");
        }
    }
}

Đánh Giá Thuật Toán Tìm Kiếm Tuần Tự

Độ phức tạp thuật toán:

  • Trường hợp tốt: O(1) (Khi phần tử mục tiêu nằm ở vị trí đầu tiên của danh sách)
  • Trung bình: O(n) (Khi phần tử mục tiêu nằm ở giữa hoặc phải kiểm tra toàn bộ danh sách)
  • Trường hợp xấu: O(n) (Khi phần tử mục tiêu nằm ở cuối danh sách hoặc không có trong danh sách)

Không gian bộ nhớ sử dụng: O(1) (Chỉ sử dụng một lượng bộ nhớ cố định, không cần bộ nhớ phụ lớn)

Tại chỗ (In-place): Có

Cách sử dụng:

Tìm kiếm tuần tự thường được áp dụng trong các tình huống sau:

  • Danh sách không được sắp xếp: Khi làm việc với danh sách hoặc mảng không được sắp xếp, thuật toán này hoạt động hiệu quả mà không cần phải sắp xếp trước.
  • Danh sách nhỏ hoặc không cần tối ưu hóa: Khi danh sách có kích thước nhỏ, việc sử dụng Tìm kiếm Tuần tự có thể là lựa chọn hợp lý vì đơn giản và dễ triển khai.
  • Khi không có yêu cầu đặc biệt về hiệu suất: Khi không cần xử lý nhanh chóng với danh sách lớn, tìm kiếm tuần tự có thể đáp ứng đủ yêu cầu.

Tìm kiếm tuần tự là một thuật toán đơn giản và dễ hiểu, thích hợp cho các bài toán nhỏ hoặc khi danh sách chưa được sắp xếp. Tuy nhiên, nó không hiệu quả với các danh sách lớn và không tối ưu về mặt hiệu suất so với các thuật toán tìm kiếm khác như tìm kiếm nhị phân.

Bài viết liên quan:

Cấu trúc dữ liệu danh sách liên kết (LinkedList)
Cấu trúc dữ liệu Mảng (Array)
Giới thiệu về thuật toán
Định lý thợ (Master Theorem)
Giải thuật Qui hoạch động (Dynamic Programming) 
Giải thuật chia để trị (Divide and Conquer)
Phân tích tiệm cận trong CTDL và giải thuật
Giải thuật tham lam (Greedy Algorithm)
Đệ quy trong lập trình
Thuật toán tìm kiếm hàm mũ – Exponential Search
Thuật toán tìm kiếm nhảy – Jump Search
Thuật toán tìm kiếm tam phân (Ternary Search)

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

KHÁI NIỆM QUẢN LÝ DỰ ÁN CÔNG NGHỆ THÔNG TIN (IT PROJECT MANAGEMENT)

Cấu trúc lập trình và Mảng

Bắt đầu với C#

1. GIỚI THIỆU KHÁI NIỆM CHUẨN MỰC – ĐẠO ĐỨC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

2. ÁP DỤNG CÁC CHUẨN MỰC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×