tailieunhanh - Kiến trúc máy tính - Phần 12

Thực hiện phân hoạch dãy S cần sắp thành 3 dãy S1, S2, S3. Trong đó: S2 chỉ có một phần tử, tất cả các phần tử của dãy S3 đều phần tử của dãy cả các phần tử của dãy S1 đều ≤ phần tử của dãy S2 Dãy S1, S3 có thể là rỗng Tiếp tục phân hoạch dãy S1 và S3 độc lập theo nguyên tắc trên đến khi dãy cần thực hiện phân hoạch chỉ có một phần tử thì dưng lại. Khi đó ta được dãy các phần tử được sắp | Sorting Bài 12. Các thuật toán sắp xếp nhanh O(nlogn) Sắp xếp nhanh – Quick sort Sắp xếp trộn - Merge sort Vun đống – Heap sort Sorting Chia và trị - Divide and conquer Chia và trị là phương pháp thiết kế thuật toán theo kiểu: Phân chia: Chia dữ liệu đầu vào S của bài toán thành 2 tập con rời nhau S1 và S2 Đệ qui: Giải bài toán với dữ liệu vào là các tập con S1 và S2 Trị: kết hợp các kết quả của S1 và S2 thành kết quả của S Trường hợp cơ sở cho thuật toán đệ qui ở đây là các bài toán có kích thước 0 hoặc 1 Sorting Sắp xếp nhanh – Quick sort Ý tưởng (sử dụng phương pháp chia và trị): Thực hiện phân hoạch dãy S cần sắp thành 3 dãy S1, S2, S3. Trong đó: S2 chỉ có một phần tử, tất cả các phần tử của dãy S3 đều > phần tử của dãy S2. Tất cả các phần tử của dãy S1 đều ≤ phần tử của dãy S2 Dãy S1, S3 có thể là rỗng Tiếp tục phân hoạch dãy S1 và S3 độc lập theo nguyên tắc trên đến khi dãy cần thực hiện phân hoạch chỉ có một phần tử thì dưng lại. Khi đó ta được dãy các phần tử được | Sorting Bài 12. Các thuật toán sắp xếp nhanh O(nlogn) Sắp xếp nhanh – Quick sort Sắp xếp trộn - Merge sort Vun đống – Heap sort Sorting Chia và trị - Divide and conquer Chia và trị là phương pháp thiết kế thuật toán theo kiểu: Phân chia: Chia dữ liệu đầu vào S của bài toán thành 2 tập con rời nhau S1 và S2 Đệ qui: Giải bài toán với dữ liệu vào là các tập con S1 và S2 Trị: kết hợp các kết quả của S1 và S2 thành kết quả của S Trường hợp cơ sở cho thuật toán đệ qui ở đây là các bài toán có kích thước 0 hoặc 1 Sorting Sắp xếp nhanh – Quick sort Ý tưởng (sử dụng phương pháp chia và trị): Thực hiện phân hoạch dãy S cần sắp thành 3 dãy S1, S2, S3. Trong đó: S2 chỉ có một phần tử, tất cả các phần tử của dãy S3 đều > phần tử của dãy S2. Tất cả các phần tử của dãy S1 đều ≤ phần tử của dãy S2 Dãy S1, S3 có thể là rỗng Tiếp tục phân hoạch dãy S1 và S3 độc lập theo nguyên tắc trên đến khi dãy cần thực hiện phân hoạch chỉ có một phần tử thì dưng lại. Khi đó ta được dãy các phần tử được sắp. Sorting Thuật toán sắp xếp Quick sort Algorithm QuickSort (array A, i, j ); Input: Dãy các phần tử A[i],,A[j] và hai số nguyên i, j Output: Dãy A[i],,A[j] được sắp. if i Ví dụ Sorting Vấn đề đặt ra ở đây là phân hoạch dãy S như thế nào? Sorting Thuật toán phân hoạch Chọn một phần tử bất kỳ của dãy làm dãy S2 (phần tử này được gọi là phần tử chốt -pivot). Thực hiện chuyển các phần tử có khóa ≤ phần tử chốt về bên trái và các phần tử > phần tử chốt về bên phải, sau đó đặt phần tử chốt về đúng vị trí của nó trong dãy. 6 12 32 1 3 1 3 6 32 12 Sau khi phân hoạch 6 3 32 1 12 6 3 1 32 12 Sorting Chú ý Phần tử chốt có thể được chọn là một phần tử bất kỳ của dãy. - Phần tử chốt có thể chọn là phần tử đầu hoặc giữa hoặc cuối dãy. - Tốt nhấ là chọn phần .

TỪ KHÓA LIÊN QUAN