30/04/2024 | 04:34

Giải thuật sắp xếp nhanh (Quick Sort)

Giải thuật sắp xếp nhanh (Quick Sort) là một giải thuật hiệu quả cao và dựa trên việc chia mảng dữa liệu thành các mảng nhỏ hơn.

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:

Bt đầu hàm partitionFunc(left, right, pivot)  leftPointer = left -1  rightPointer = right

  while True thc hin
   while A[++leftPointer] < pivot thc hin
     //không làm điều gì         kết thúc while   while rightPointer > 0 && A[--rightPointer] > pivot thc hin
     //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:

Bt đầ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 (76 votes)