Sắp xếp nhanh (Quick Sort) là gì?
Giải thuật sắp xếp nhanh (Quick Sort) là một giải thuật hiệu quả cao an toàn và dựa trên việc chia mảng dữa liệu thành dịch vụ các mảng nhỏ hơn link down . Giải thuật sắp xếp nhanh chia mảng thành hai phần bằng cách so sánh từng phần tử xóa tài khoản của mảng nguyên nhân với một phần tử trực tuyến được chọn gọi là phần tử chốt (Pivot): một mảng nạp tiền bao gồm công cụ các phần tử nhỏ hơn tự động hoặc bằng phần tử chốt vô hiệu hóa và mảng còn lại nơi nào bao gồm lừa đảo các phần tử lớn hơn kinh nghiệm hoặc bằng phần tử chốt.
Tiến trình chia này diễn ra tiếp tục cho tới khi độ dài ở đâu nhanh của trực tuyến các mảng con đều bằng 1 ứng dụng . Giải thuật sắp xếp nhanh tỏ ra trên điện thoại khá hiệu quả quản lý với link down các tập dữ liệu lớn khi sử dụng mà độ phức tạp trường hợp trung bình vô hiệu hóa và trường hợp xấu nhất là O(nlogn) qua web với n là số phần tử.
Kỹ thuật chọn phần tử chốt trong giải thuật sắp xếp nhanh (Quick Sort)
Kỹ thuật chọn phần tử chốt ảnh hưởng mẹo vặt khá nhiều đến khả năng rơi vào ứng dụng các vòng lặp vô hạn đối ở đâu tốt với hướng dẫn các trường hợp quảng cáo đặc biệt miễn phí . Tốt nhất là chọn phần tử chốt (pivot) nằm ở trung vị kích hoạt của danh sách miễn phí . nạp tiền Khi đó quảng cáo , sau log2(n) lần chia chúng ta trực tuyến sẽ đạt tới kích thước mới nhất các mảng con bằng 1.
Dưới đây là giá rẻ các cách chọn phần tử chốt:
Chọn phần tử đứng đầu chia sẻ hoặc đứng cuối làm phần tử chốt.
Chọn phần tử đứng giữa danh sách làm phần tử chốt.
Chọn phần tử trung vị trong ba phần tử đứng đầu download , đứng giữa tốt nhất và đứng cuối làm phần tử chốt.
Chọn phần tử ngẫu nhiên làm phần tử chốt tổng hợp . Tuy nhiên cách này bản quyền rất dễ dẫn đến khả năng rơi vào lấy liền các trường hợp full crack đặc biệt.
Minh họa cách chia trong giải thuật sắp xếp nhanh (Quick Sort)
Hình minh họa trực tuyến dưới đây minh họa cách tìm phần tử chốt trong mảng cập nhật . Ở đây download , chúng ta chọn phần tử chốt đứng ở cuối danh sách.
Phần tử chốt chia danh sách thành hai phần qua app . Và sử dụng đệ qui tốc độ , chúng ta tìm phần tử chốt cho ở đâu nhanh các mảng con cho tới khi danh sách chỉ còn một phần tử.
Giải thuật phần tử chốt trong sắp xếp nhanh (Quick Sort)
Dựa vào cách chia danh sách trong giải thuật sắp xếp nhanh ở trên mới nhất , chúng ta mẹo vặt có thể viết một giải thuật như full crack dưới đây.
Bước 1: Chọn phần tử chốt là phần tử có chỉ mục cao nhất (phần tử ở cuối danh sách)Bước 2: Khai báo hai biến cập nhật để trỏ tới bên trái địa chỉ và bên phải lấy liền của danh sách tốc độ , ngoại trừ phần tử chốtBước 3: Biến bên trái trỏ tới mảng con bên tráiBước 4: Biến bên phải trỏ tới mảng con bên phải Bước 5: địa chỉ Khi giá trị tại biến bên trái là nhỏ hơn phần tử chốt miễn phí thì di chuyển sang phảiBước 6: nạp tiền Khi giá trị tại biến bên phải là lớn hơn phần tử chốt tốc độ thì di chuyển sang trái Bước 7: tổng hợp Nếu không trong trường hợp cả bước 5 hay nhất và bước 6 quảng cáo thì tráo đổi giá trị biến trái lừa đảo và phảiBước 8: miễn phí Nếu left ≥ right giả mạo , địa chỉ thì đây chính là giá trị chốt mới
Giải thuật phần tử chốt mẫu trong sắp xếp nhanh (Quick Sort)
Từ mật khẩu các bước trên tất toán , chúng ta cài đặt có thể suy ra code mẫu cho giải thuật sắp xếp nhanh (Quick Sort) nhanh nhất như sau:
Bắt đầu hàm partitionFunc(left, right, pivot) leftPointer = left -1 rightPointer = right while True thực hiện while A[++leftPointer] < pivot thực hiện //không làm điều gì kết thúc while while rightPointer > 0 && A[--rightPointer] > pivot thực hiện //không làm điều gì kết thúc while if leftPointer >= rightPointer break else Tráo đổi leftPointer,rightPointer kết thúc if kết thúc while Tráo đổi leftPointer,right return leftPointer Kết thúc hàm
Giải thuật sắp xếp nhanh (Quick Sort)
Sử dụng giải thuật phần tử chốt một cách đệ qui tối ưu , chúng ta kinh nghiệm có thể kết thúc quản lý với địa chỉ các mảng con nhỏ hơn bản quyền . Sau đó mỗi mảng con này ở đâu nhanh có thể hướng dẫn được xử lý kích hoạt với sắp xếp nhanh nơi nào . Dưới đây ở đâu tốt , mình sử dụng giải thuật đệ qui cho sắp xếp nhanh:
Bước 1: Lấy phần tử chốt là phần tử ở cuối danh sáchBước 2: Chia mảng giả mạo bởi sử dụng phần tử chốtBước 3: Sử dụng sắp xếp nhanh một cách đệ qui nạp tiền với mảng con bên trái Bước 4: Sử dụng sắp xếp nhanh một cách đệ qui mới nhất với mảng con bên phải
Giải thuật mẫu cho Sắp xếp nhanh (Quick Sort)
Từ phần giải thuật trên công cụ , chúng ta như thế nào có thể suy ra code mẫu cho giải thuật sử dụng đệ qui cho sắp xếp nhanh tổng hợp như sau:
Bắt đầu hàm quickSort(left, right) if right-left <= 0 return else pivot = A[right] partition = partitionFunc(left, right, pivot) quickSort(left,partition-1) quickSort(partition+1,right) kết thúc if Kết thúc hàm
Theo Tutorialspoint
Bài trước: Shell Sort trong cấu trúc dữ liệu giá rẻ và giải thuật
Bài tiếp: Cấu trúc dữ liệu đồ thị (Graph)
4.9/5 (89 votes)