C++
  • Home
  • Học lập trình
    • All
    • Học C++
    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

    Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

    học lập trình c++ thì làm được gì

    Học Lập Trình C++ Thì Làm Được Gì?

    Sự khác nhau giữa struct và class trong C++

    Sự Khác Nhau Giữa Struct Và Class Trong C++

    Sự khác nhau giữa tham chiếu và con trỏ c++

    Sự Khác Nhau Giữa Tham Chiếu Và Con Trỏ Trong C++

    • Học C++
  • Reviews
    Top 7 công cụ tạo website không cần code

    Top 7 Công Cụ Tạo Website Không Cần Code Miễn Phí

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips
No Result
View All Result
  • Home
  • Học lập trình
    • All
    • Học C++
    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

    Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

    học lập trình c++ thì làm được gì

    Học Lập Trình C++ Thì Làm Được Gì?

    Sự khác nhau giữa struct và class trong C++

    Sự Khác Nhau Giữa Struct Và Class Trong C++

    Sự khác nhau giữa tham chiếu và con trỏ c++

    Sự Khác Nhau Giữa Tham Chiếu Và Con Trỏ Trong C++

    • Học C++
  • Reviews
    Top 7 công cụ tạo website không cần code

    Top 7 Công Cụ Tạo Website Không Cần Code Miễn Phí

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips
No Result
View All Result
C++
No Result
View All Result
Home Học lập trình Học C++

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

admin by admin
October 23, 2023
in Học C++
0 0
0
Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX
0
SHARES
3
VIEWS
Share on FacebookShare on Twitter

Thời đại công nghệ số phát triển như vũ bão kéo theo nhiều thuật toán ra đời với tất cả sự sáng tạo tuyệt vời. Quick Sort – một trong những thuật toán sắp xếp đột phá trong thế kỉ XX cung cấp đến người dùng cách thức tiếp cận nhanh chóng nhất, giúp có được những phương pháp sắp xếp dễ dàng nhất. Cpphinditutorials sẽ cùng bạn tìm hiểu tất tần tật về thuật toán QUICK SORT.

THUẬT TOÁN QUICK SORT LÀ GÌ?

Thuật toán quick sort là gì

Quick Sort được biết đến là một thuật toán quan trọng hiện nay được dùng phổ biến trong lập trình C++. Quick Sort được hiểu là thuật toán sắp xếp theo kiểu Part Sort (phân chia). Sử dụng thuật toán này mang lại hiệu quả cao dựa trên việc phân chia các mảng dữ liệu thành những nhóm phần tử nhỏ hơn.

Thuật toán Quick Sort chia mảng thành hai phần, bằng việc so sánh từng phần tử của mảng với phần tử chốt. Một mảng là các phần tử nhỏ hơn hoặc mảng bằng phần tử chốt, một mảng là các phần tử lớn hơn so với phần tử chốt. Quá trình tiếp tục diễn ra cho đến khi độ dài của những mảng con đều bằng 1. Sử dụng phương pháp đệ quy, chúng ta có thể có cách sắp xếp nhanh những mảng con, sau khi kết thúc chương trình sẽ được một mảng đã được sắp xếp hoàn chỉnh.

KỸ THUẬT CHỌN PHẦN TỬ CHỐT

Trong những trường hợp đặc biệt, kỹ thuật chọn phần tử chốt có ảnh hưởng rất lớn đến khả năng rơi vào các vòng lặp vô hạn. Vì vậy tốt nhất chúng ta nên chọn phần tử chốt nằm trung vị ở danh sách. Sau log2(n) lần chia sẽ đạt được kích thướng mảng con là bằng 1. Cách chọn phần tử chốt như sau:

  • Nên chọn phần tử chốt là những phần tử đứng đầu hoặc đứng cuối.
  • Chọn phần tử chốt đứng giữa danh sách.
  • Chọn phần tử chốt là phần tử trung vị trong ba phần tử đứng ở đầu, ở giữa và ở cuối.
  • Chọn phần tử chốt là phần tử ngẫu nhiên, nhưng cách này có thể dẫn đến khả năng rơi vào một số trường hợp đặc biệt.

Ý TƯỞNG THUẬT TOÁN QUICK SORT

Ứng dụng của thuật toán Quick Sort có thể nói là rất hữu ích đối với nhiều lĩnh vực như máy tính thương mại, tính toán số hay tìm kiếm thông tin nhanh chóng. Những ý tưởng của thuật toán Quick Sort phổ biến nhất là: 

  • Lựa chọn được phần tử chốt.
  • Khai báo hai biến con trỏ để duyệt hai phía của phần tử chốt.
  • Biến bên trái sẽ trỏ đến từng phần tử của mảng con, còn biến bên trái là của phần tử chốt.
  • Biến bên phải sẽ trỏ đến từng phần tử của mảng con, biến bên trái sẽ là của phần tử chốt.
  • Nếu thấy biến bên trái nhỏ hơn phần tử chốt thì chúng ta sẽ tiến hành di chuyển sang phải.
  • Nếu thấy biến bên phải nhỏ hơn phần tử chốt thì chúng ta sẽ di chuyển sang trái.
  • Trong trường hợp nếu không xảy ra như ở trường hợp 5 và 6, chúng ta sẽ tráo đổi giá trị của 2 biến trái và phải.
  • Nếu biến bên trái lớn hơn biến bên phải thì đây là giá trị chốt mới.
  • Giải thuật.

GIẢI THUẬT

Dưới đây là một ví dụ về chương trình mô phỏng thuật toán đệ quy được viết trên ngôn ngữ lập trình java:

public class QuickSort {

  public static void main(String[] args) {

    int[] x = {6, 2, 3, 4, 5, 9, 1};

    printArray(x);

NHỮNG ĐIỀU CẦN NÊN BIẾT VỀ THUẬT TOÁN SẮP XẾP ĐỘT PHÁ CỦA TK XX – QUICK SORT

NGUYÊN TẮC HOẠT ĐỘNG CỦA QUICKSORT

QuickSort hoạt động dựa trên nguyên tắc “chia để trị”. Quy trình hoàn chỉnh của thuật toán có thể được mô tả như sau:
– Shuffle: hoán vị toàn bộ mảng. Đây là bước đầu tiên của QuickSort có nhiệm vụ “đảo” toàn bộ mảng nhằm tránh trường hợp xấu nhất là mảng sắp xếp theo thứ tự giảm dần.
– Select pivot: QuickSort chọn một phần tử từ mảng, gọi là “pivot”, thường là phần tử cuối cùng hoặc phần tử đầu tiên trong mảng.
– Partition: QuickSort chia mảng thành hai phần, một phần có các phần tử nhỏ hơn hoặc bằng pivot và phần còn lại chứa các phần tử lớn hơn pivot.
– Sort: Sau khi phân loại, Quicksort đệ quy lên hai mảng con này, lặp lại quá trình cho đến khi mảng đã sắp xếp hoàn chỉnh.

ƯU ĐIỂM CỦA QUICKSORT

– Hiệu suất cao: QuickSort là một trong những thuật toán sắp xếp nhanh nhất trong thực tế. Trong trường hợp trung bình, độ phức tạp là O(nlogn).
– Sử dụng ít bộ nhớ bổ sung: QuickSort là một thuật toán sắp xếp trong (in-place) tức là về cơ bản, QuickSort không yêu cầu thêm bộ nhớ (như MergeSort)
– Dễ cài đặt: Thuật toán này có thể được cài đặt một cách đơn giản và hiệu quả, thường chỉ cần vài dòng mã.

NHƯỢC ĐIỂM CỦA QUICKSORT

– Trong trường hợp xấu nhất, khi pivot được chọn không tốt hoặc mảng được sắp xếp giảm dần, QuickSort có thể có độ phức tạp là O(n^2). Tuy nhiên, trường hợp này đã được hạn chế nhờ bước shuffle đầu tiên.
– Ngoài ra, vào thập niên 90 của thế kỷ trước, tức là sau khi Quicksort được phát triển 30 năm, các nhà khoa học nhận ra QuickSort xử lý mảng có nhiều phần tử trùng lặp với thời gian rất lâu. Tuy nhiên, cũng trong thập kỷ này, Edsger Dijkstra (một nhà khoa học người Hà Lan) đã lấy ý tưởng từ lá cờ Hà Lan 🇳🇱 để phát minh ra thuật toán 3-way partitioning hay Dutch National Flag với ý tưởng có thể trình bày một cách ngắn gọn như sau: Chia mảng ra 3 phần bằng phần tử pivot, bé hơn phần tử pivot và lớn hơn phần tử pivot. Với cách thức này, thuật toán QuickSort đã tối ưu hoá sắp xếp mảng có các phân tử trùng lặp với độ phức tạp gần như tuyến tính.

ỨNG DỤNG CỦA QUICKSORT

ỨNG DỤNG CỦA QUICKSORT

QuickSort được sử dụng rộng rãi trong thực tế và có nhiều ứng dụng, bao gồm:
  • Sắp xếp dữ liệu trong cơ sở dữ liệu.
  • Tìm kiếm phần tử trong danh sách đã sắp xếp.
  • Sử dụng trong các thư viện sắp xếp của nhiều ngôn ngữ lập trình.
Trong tổng quan, QuickSort là một thuật toán sắp xếp mạnh mẽ và hiệu quả khi được triển khai đúng cách. Mặc dù có một số điểm yếu, nhưng các biến thể và cải tiến đã giúp nâng cao hiệu suất của nó và biến nó thành một công cụ quan trọng trong thế giới lập trình và khoa học máy tính.

ĐỘ NỔI TIẾNG CỦA QUICKSORT

QuickSort được xem là thuật toán sắp xếp đột phá nhất, đứng vào hàng ngũ những thuật toán có sức ảnh hưởng lớn nhất thế kỷ 20 MATH 6140 – The Top Ten Algorithms from the 20th Century | pi.math.cornell.edu. Đặc biệt hơn, thuật toán QuickSort đã giúp người cha của nó – Sir Charles Antony Richard Hoare thắng giải Turing năm 1980. Ngày nay, QuickSort vẫn được xem là thuật toán sắp xếp quan trọng nhất và có ảnh hưởng lớn nhất đối với ngành Khoa học máy tính nói riêng và Công nghệ thông tin nói chung.

 

Previous Post

Top 7 website bán túi xách nữ chính hãng, uy tín nhất

admin

admin

Leave a Reply Cancel reply

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

  • Trending
  • Comments
  • Latest
cách code hình trái tim bằng c++

Cách code hình trái tim giống với nhân vật Thủ Khoa Lý

December 7, 2023
hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

October 3, 2023
Office 2019 full crack

Cách Crack Office 2019 Đơn Giản, Dễ Hiểu Thành Công 100%

September 19, 2023
Top 10 ứng dụng mua hàng Trung Quốc uy tín nhất hiện nay

Top 10 ứng dụng mua hàng Trung Quốc uy tín nhất hiện nay

January 18, 2025

Các lớp lưu trữ trong cpp

0

Câu lệnh if else trong cpp

0

Chức năng của switch trong cpp

0

Mảng đối tượng trong C++

0
Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

October 23, 2023
Top 7 website bán túi xách nữ chính hãng, uy tín nhất

Top 7 website bán túi xách nữ chính hãng, uy tín nhất

October 12, 2023
Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

October 7, 2023
Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

October 5, 2023

Recommended

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

October 23, 2023
Top 7 website bán túi xách nữ chính hãng, uy tín nhất

Top 7 website bán túi xách nữ chính hãng, uy tín nhất

October 12, 2023
Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

October 7, 2023
Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

October 5, 2023
Hướng dẫn học C++

© 2023 Hướng dẫn học C++ - Website thuộc bản quyền của Hướng dẫn học C++.

Liên kết

  • Home
  • Học lập trình
  • Reviews
  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn

Theo dõi chúng tôi

No Result
View All Result
  • Home
  • Học lập trình
    • Học C++
  • Reviews
  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips

© 2023 Hướng dẫn học C++ - Website thuộc bản quyền của Hướng dẫn học C++.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In