Phức tạp của thuật tốn

Một phần của tài liệu Giáo trình cấu trúc dữ liệu và giải thuật (Trang 30)

Người ta chứng minh được rằng, nếu chọn dãy bước chia{hj} theo (1) thì thuật tốn ShellSort cĩ độ phức tạp cỡ: n1,2 << n2.

II.3.6. Phương pháp sắp xếp phân hoạch (QuickSort)

Phương pháp Quick Sort (hay sắp xếp kiểu phân đoạn) là một cải tiến của phương pháp sắp xếp kiểu đổi chỗ, do C.A.R. Hoare đề nghị, dựa vào cách hốn vị

các cặp phần tử khơng đúng thứ tự cĩ thểở những vị trí xa nhau.

a. Ý tưởng phương pháp:

Chọn một phần tử bất kỳ (ta thường chọn phần tử giữa) g của dãy làm mốc.

Sau đĩ thực hiện phân hoạch dãy thành 2 dãy con: dãy con trái gồm những phần tử cĩ giá trị khơng lớn hơn g dãy con phải gồm những phần tử cĩ giá trịkhơng nhỏ hơn g (bằng cách duyệt dãy từ bên trái cho đến khi cĩ một phần tử xi ≥ g, sau đĩ duyệt dãy từ bên phải cho đến khi cĩ một phần tử xj≤ g. Đổi chỗ xi và xj . Tiếp tục quá trình duyệt và đổi chỗ cho tới khi hai phía vượt qua nhau: i > j). Sau khi phân hoạch, ta tách dãy thành 3 phần:

xk ≤ g với mọi k = 1, ..., j (Dãy con trái hay dãy con thấp); xm ≥ g với mọi m = i, ..., n (Dãy con phải hay dãy con cao); xp = g với mọi p = j+1, ..., i-1, nếu i-1 ≥ j+1.

Vì thế phương pháp này cịn gọi là phương pháp sắp xếp bằng phân hoạch. Khi đĩ, nếu i-1 ≥ j+1 thì các phần tử xj+1, ..., xi-1 được định vịđúng:

xk xm xp=g

Với từng dãy con trái và phải (cĩ độ dài lớn hơn 1) ta lại phân hoạch (đệ

qui) chúng tương tự như trên. Ví dụ: Xét dãy

44 55 12 42 94 18 06 67 Sau 2 lần đổi chỗ, phân hoạch dãy trên thành

Một phần của tài liệu Giáo trình cấu trúc dữ liệu và giải thuật (Trang 30)

Tải bản đầy đủ (PDF)

(148 trang)