Giới thiệu thuật Toán Quick Sort

2 min read

Thuật toán Quick Sort (sắp xếp nhanh) là một trong những thuật toán sắp xếp phổ biến nhất nhờ tính hiệu quả và đơn giản trong triển khai. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về nguyên lý hoạt động, ưu nhược điểm, nhưng cách triển khai thuật toán Quick Sort.

1. Quick Sort là gì?

Quick Sort là thuật toán sắp xếp dựa trên nguyên tắc chia để trị (divide and conquer). Thuật toán chá ra một danh sách lớn thành hai danh sách nhỏ hơn, sau đó sắp xếp từng danh sách con.

2. Nguyên lý hoạt động

Quick Sort hoạt động theo các bước sau:

  1. Chọn pivot: Chọn một phần tử trong danh sách làm pivot (trục).
  2. Phân chia:
    • Sắp xếp các phần tử nhỏ hơn pivot vào bên trái.
    • Sắp xếp các phần tử lớn hơn pivot vào bên phải.
  3. Đệ quy: Áp dụng Quick Sort cho hai danh sách con đến khi danh sách con không còn nhiều hơn một phần tử.

3. Mã giả Quick Sort trong Python

Dưới đây là triển khai Quick Sort bằng Python:

# Triển khai Quick Sort

def quick_sort(arr):
    if len(arr) <= 1:  # Điều kiện dừng
        return arr

    pivot = arr[len(arr) // 2]  # Chọn pivot (phần tử giữa)
    left = [x for x in arr if x < pivot]  # Nhóm bé hơn pivot
    middle = [x for x in arr if x == pivot]  # Nhóm bằng pivot
    right = [x for x in arr if x > pivot]  # Nhóm lớn hơn pivot

    return quick_sort(left) + middle + quick_sort(right)

# Ví dụ
arr = [3, 6, 8, 10, 1, 2, 1]
print("Danh sách đã sắp xếp:", quick_sort(arr))

4. Phân tích độ phức tạp

  • Trường hợp trung bình:
    • Độ phức tạp: O(nlog⁡n)O(n \log n)
    • Pivot chia danh sách tương đối đều.
  • Trường hợp xấu nhất:
    • Độ phức tạp: O(n2)O(n^2)
    • Xảy ra khi pivot chia danh sách không đều (vd: chọn pivot là phần tử đầu tiên).
  • Trường hợp tốt nhất:
    • Độ phức tạp: O(nlog⁡n)O(n \log n).

5. Ưu điểm và nhược điểm

  • Ưu điểm:
    • Hiệu quả cao trong phần lớn các trường hợp.
    • Dễ hiểu và triển khai.
    • Không cần bộ nhớ bổ sung (độ phức tạp không gian thường là O(log⁡n)O(\log n)).
  • Nhược điểm:
    • Độ phức tạp tệ như khi pivot không tốt.
    • Phụ thuộc nhiều vào chiến lược chọn pivot.

6. Ưứng dụng thực tế

Quick Sort thường được sử dụng trong:

  • Các database như SQL và NoSQL.
  • Các ngôn ngữ lập trình: Quick Sort thường được dùng làm thuật toán sắp xếp mặc định trong Python, Java và C++.
  • Các công cụ tìm kiếmxử lý dữ liệu lớn.

7. Kết luận

Thuật toán Quick Sort là lựa chọn tuyệt vời cho việc sắp xếp nhờ tính hiệu quả và đơn giản. Tuy nhiên, bạn cần cân nhắc khi triển khai trong những trường hợp pivot không tối ưu. Nắm vữ thuật toán này giúp bạn có một công cụ sắp xếp nhanh và hiệu quả trong kho dữ liệu của mình.

tham khảo: https://topdev.vn/blog/10-thuat-toan-hang-dau-danh-cho-lap-trinh-vien/

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *