Bài gi ảng của TS Nguyễn Nam Hồng.[r]
(1)Lecturer: PhD Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580
Email: ngohuuphuc76@gmail.com
Cấu trúc liệu giải thuật
(2)ội dung:
6.1 Thuật toán QuickSort (6) 6.2 Ví dụ QuickSort (7)
6.3 Hoạt động QuickSort (6) 6.4 Hiệu QuickSort (6)
Tham khảo:
1 Intro to Algorithms Chapter QuickSort.htm Lecture – quicksort.htm
3 Quick Sort.htm
(3)6.1 Thuật toán QuickSort (1/6)
Giải thuật Quick-sort
phương pháp xếp dựa chiến lược chia để trị
Giải thuật gồm bước:
Phép chia: chọn ngẫu nhiên phần tử x làm khóa,
chia tập liệu S ban đầu
thành phần:
L chứa phần tử nhỏ x
E chứa phần tử x
G chứa phần tử lớn x Bước lặp: xếp tập L
và G
Hiệu chỉnh lại tập L, E
và G
x
x
L E G
(4)Các bước thuật toán:
Chia tập liệu ban đầu thành tập con:
cho, tất phần tử bên trái nhỏ tất phần tử bên phải
Sắp xếp tập cách độc lập nối chúng lại với nhau:
(5)6.1 Thuật toán QuickSort (3/6)
Với tập trên, tập chia thành 02 tập
vậy, ta có tối đa 04 tập
tập phần tử nhỏ bên trái cùng, tập phần tử lớn bên phải
Lặp lại trình tập có phần tử
(6) Trên tập S, lấy phần tử y lấy khỏi
tập
Đưa phần tử y vào tập L, E hay G, tùy thuộc vào phép so sánh với khóa x
Với phép lấy phần tử đưa chúng vào tập tương ứng, độ phức tạp phép tốn
O(1)
(7)6.1 Thuật toán QuickSort (5/6)
7 → 2 6 7 9
4 → 2 4 7 → 7 9
(8)QuickSort mô tả qua nhị phân:
Mỗi node biểu diễn lần gọi đệ quy lưu giữ:
Dãy chưa xếp khóa
Dãy sau xếp
Gốc lần gọi đệ quy
(9)6.2 Ví dụ QuickSort (1/7)
(10)