BXLlƠO(n)
316
3. Thu t toán s p x p QuickSort
a.BƠi toán: Giả sử cần sắp xếp một dãy con kể từ vị trí start
đến endtrong danh sách list[ ]với pilotlà vị trí c a phần tử trong danh sách được chọn làm hoa tiêu.
b.ụ t ng thu t toán
• Chia dãy sắp xếp thành 2 danh sách con sao cho danh sách 1 gồm các phần tử nhỏ hơn các phần tử c a danh sách 2 • Chọn một phần tử hoa tiêu (pivot) để thực hiện việc phân chia • Lặp lại việc phân chia trên cho từng danh sách đến khi nào
những danh sách cuối cùng chỉ có 1 phần tử
5.6 CỄC THU T TOỄN S P X P SONG SONG
317
c.Thu t toán QuickSort tu n t đ c vi t đ qui
QuickSort(list, start, end){ if (start < end){
Partition (list, start, end, pilot); QuickSort (list, start, pilot); QuickSort (list, pilot+1, end); }
}
Trong đó, Partition() là hàm chuyển tất cả các phần tử nhỏ hơn hoặc bằng phần tử pilot về trước phần tử pilot, những phần tử lớn hơn sẽ được đặt sau pilot.Thực hiện phân tách xong thì pilot là vị trí c a phần tử hoa tiêu danh sách mới
5.6 CỄC THU T TOỄN S P X P SONG SONG
318
d. Ví d
5.6 CỄC THU T TOỄN S P X P SONG SONG
63 3 1 5 8 7 2 4 4 1 2 3 5 7 8 6 3 1 2 4 5 7 8 6 2 1 3 6 7 8 Danhsách cần sắp xếp pilot
Thu t toánQuickSorttu n t có ĐPTO(nlogn)
319
5.6 CỄC THU T TOỄN S P X P SONG SONG
e. Song songhóaQuickSort
Phát bi u l iQuickSort
• Chọn phần tửpilotđểchiadãy thànhhaiphần:bên trái là những phần tử nhỏ hơn hoặc bằngpilotvà bên phải là những phần tử lớn hơnpilot.
• Phần tửpilotđược chèn vào giữahaidãyconđược tách và nó là vị trí đã được sắp xếpsau khithực hiện bước1.
• Bước1lặp lại một cách đệqui chođếnkhicác dãyconchỉ còn lại một phần tử.
320
5.6 CỄC THU T TOỄN S P X P SONG SONG
Song songhóaQuickSort
ụ t ng:bắt đầu thực hiện mộtBXLvà chuyển các l i gọi
đệquy chocácBXLkhác.
• Tạoratập các tiến trình và đặt dãy cần sắp xếp vàostack.
• Tiến trình đầu tiên (tiến trình ch ) thực hiện tách dãycho
trước thànhhaidãyconvà đặt vàostack.
• Những tiến trình khác (tiến trình tớ) xử lý những dãyconđã được táchravà thực hiện những công việc tương tự như thuật toán đã nêu.
321
5.6 CỄC THU T TOỄN S P X P SONG SONG
P4P0 P0 P0 P4 P0 P2 P4 P6 P0 P1 P6 6 3 1 5 8 7 2 4 4 7 2 3 5 7 8 6 3 1 2 4 5 7 8 6 2 1 3 6 7 8
Danhsách sắp xếp Phân công việcchocácBXL
322
5.6 CỄC THU T TOỄN S P X P SONG SONG
f.Đánh giá thu t toánQuickSort song song
• Giả thiết rằngpilotđược chọn một cách lý tư ng để mỗi lần đều tách thànhhaiphần có kích cỡ bằngnhau.
1.Th igiantính toán.
• Đầu tiên một bộ xử lý phảithaotác vớinsố.Sauđóhai
bộ xử lýthaotác trênn/2số, rồi bốn bộ xử lýthaotác trênn/4số,v.v.
• Th igianđể thực hiện thuật toán sẽ là:
tcomp= n + n/2 + n/4 +… 2n
2.Th igiantruy n thông.
• Sựtraođổi dữ liệu giữa các bộ xử lý chỉ xảyra khithực hiện ghép kết hợp giống nhưMergeSort.
• tcomm= 2(tstartup+ (n/2)tdata+ tstartup+ (n/4)tdata+ tstartup+
(n/8)tdata…)
= 2(log p)tstartup+ 2ntdata
323
5.7 CỄC THU T TOỄN SONG SONG THỌNG D NG
1.Nhânmatrận
• Mô hình lưới2chiều • Mô hình mảng tâmthu 2.Giải hệ phương trình tuyến tính
3.Tính biểu đồ c a ảnh
4.Tô màu đồ thị
5.Thuật toánKruskaltìm câykhungcực tiểu
6.Thuật toán tính tổng tiền tố
7.Phương trình nhiệt một chiều