Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 115 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Tiêu đề
Giải Thuật Sắp Xếp
Tác giả
Võ Quang Hoàng Khang
Định dạng
Số trang
115
Dung lượng
1,81 MB
Nội dung
CHƯƠNG 2.(TT) GIẢI THUẬT SẮP XẾP Võ Quang Hoàng Khang Email: vqhkhang@gmail.com Mục tiêu Nắm vững, minh họa tính tốn phép gán (hốn vị) giải thuật xếp mảng chiều Cài đặt giải thuật ngôn ngữ C/C++ Khái niệm Sắp xếp trình xử lý danh sách phần tử để đặt chúng theo thứ tự thỏa mãn tiêu chí dựa nội dung thơng tin lưu giữ phần tử Khái niệm nghịch a1 a2 a3 a4 … … aN-2 aN-1 aN Giả sử xét mảng có thứ tự tăng dần, có iaj ta gọi nghịch Mục tiêu xếp khử nghịch (bằng cách hoán vị) Các giải thuật xếp Đổi chổ trực tiếp – Interchange Sort Chọn trực tiếp – Selection Sort Chèn trực tiếp – Insertion Sort Nổi bọt – Bubble Sort Quick Sort Một số giải thuật khác - đọc thêm tài liệu Đổi chổ trực tiếp – interchange sort Ý tưởng Ý tưởng giải thuật xuất phát từ đầu dãy, tìm tất nghịch chứa phần tử này, triệt tiêu chúng cách đổi chỗ phần tử với phần tử tương ứng cặp nghịch Lặp lại xử lý với phần tử dãy Đổi chổ trực tiếp – interchange sort Giả sử cần xếp dãy số sau tăng dần 10 3 15 Đổi chổ trực tiếp – interchange sort Bước 1: Xét phần tử (tại vị trí 1) 10 3 15 i j Đổi chổ trực tiếp – interchange sort Bước 1: Xét phần tử (tại vị trí 1) 10 3 15 8 i j Đổi chổ trực tiếp – interchange sort Bước 1: Xét phần tử (tại vị trí 1) 10 3 15 9 i j Đổi chổ trực tiếp – interchange sort Bước 1: Xét phần tử (tại vị trí 1) 10 15 10 i j “Chèn trực tiếp” “Chọn trực tiếp” có chi phí cho trường hợp xấu O(n2) đó, khơng thích hợp cho việc xếp mảng lớn Dễ cài đặt, dễ kiểm lỗi “Chèn trực tiếp” tốt “Chọn trực tiếp”, mảng có thứ tự sẵn Cần có giải thuật hiệu cho việc xếp mảng lớn 101 Quick sort Chia dãy cần thành phần Cách “chia”: ½ dãy bên trái chứa giá trị nhỏ ½ dãy bên phải Thực việc xếp dãy (đệ qui) x (x phần tử dãy) 102 i=1, j=8 x L R 10 15 1 i j L=1 R=8 Đoạn Đoạn cần xếp L=1 R=3 Đoạn L=4 R=8 103 i=4, j=8 x L R 15 10 i L=4 R=8 L=1 R=3 Đoạn cần xếp j Đoạn Đoạn L=4 R=5 L=5 R=8 104 i=5, j=8 L=5 R=8 L=4 R=5 L=1 R=4 Đoạn cần xếp L x R 15 10 i j Đoạn L=6 R=8 105 i=6, j=8 L=6 R=8 L=4 R=5 L=1 R=4 Đoạn cần xếp L x R 15 10 i j Đoạn L=6 R=7 106 x i=6, j=7 L=6 R=7 L=4 R=5 L=1 R=4 Đoạn cần xếp L R 10 15 i j 107 x i=4, j=5 L R 10 15 i j L=4 R=5 L=1 R=4 Đoạn cần xếp 108 i=1, j=4 L x 10 15 R i L=1 R=4 Đoạn cần xếp j Đoạn L=3 R=4 109 i=3, j=4 x L R 10 15 i j L=3 R=4 Đoạn cần xếp 110 10 15 Khơng cịn đoạn cần xếp! Kết thúc Đoạn cần xếp 111 Giải thuật Cho dãy aL, aL+1, … aR Bước 1: Phân hoạch dãy aL … aR thành dãy con: Dãy 1: aL … aj < x Dãy 2: aj+1 … ai-1 =x Dãy 3: … aR > x Bước 2: Nếu (L