Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 2.2: Giải thuật sắp xếp được biên soạn nhằm giúp người học có thể: Nắm vững, minh họa và tính toán được các phép gán (hoán vị) các giải thuật sắp xếp cơ bản trên mảng một chiều, cài đặt được các giải thuật bằng ngôn ngữ C.
Chương 2.2 Giải thuật xếp Trần Minh Thái Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn 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ác khái niệm Để truy xuất thơng tin nhanh chóng xác thơng tin phải xếp theo trật tự hợp lý Một số CTDL định nghĩa trước trật tự phần tử, phần tử thêm vào phải đảm bảo trật tự Sắp xếp trình xử lý danh sách phần tử (hoặc mẫu tin) để đặt chúng theo thứ tự thỏa mãn tiêu chuẩn dựa nội dung thơng tin lưu giữ phần tử Khái niệm Tương tự giải thuật tìm kiếm, khối lượng cơng việc phải thực có liên quan chặt chẽ với số lần so sánh khóa Ngồi ra, giải thuật xếp phải di chuyển phần tử Chiếm nhiều thời gian phần tử có kích thước lớn Các khái niệm Khái niệm nghịch a0 a1 a2 a3 … … an-3 an-2 An-1 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 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ỗ (hoán vị) 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 10 55 77 33 99 15 15 22 11 Đổi chỗ trực tiếp – interchange sort Bước 1: Xét phần tử (tại vị trí 0) 10 10 55 77 i j 33 99 15 15 22 11 Đổi chỗ trực tiếp – interchange sort Bước 1: Xét phần tử (tại vị trí 0) 10 10 55 i j 33 99 15 15 22 11 10 Quick sort VD: 3; 5; 8; 10; 31; 4; 81; 7; 15; 17; Giả sữ x = 10 có phần sau: Phần nhỏ x: 3; 5; 8; 4; 7; Phần lớn x: 31; 81; 15; 17 110 i=0, j=7 L R x 10 15 1 i j L=0 R=7 Đoạn Đoạn cần xếp L=0 R=2 Đoạn L=3 R=7 111 i=3, j=7 L R x 15 10 i L=3 R=7 L=0 R=2 Đoạn cần xếp j Đoạn Đoạn L=3 R=4 L=4 R=7 112 i=4, j=7 L=4 R=7 L=3 R=4 L=0 R=3 Đoạn cần xếp L x R 15 10 i j Đoạn L=5 R=7 113 i=5, j=7 L=5 R=7 L=3 R=4 L=0 R=3 Đoạn cần xếp L x R 15 10 i j Đoạn L=5 R=6 114 i=5, j=6 L=5 R=6 L=3 R=4 L=0 R=3 Đoạn cần xếp x L R 10 15 i j 115 i=3, j=4 x L R 10 15 i j L=3 R=4 L=0 R=3 Đoạn cần xếp 116 i=0, j=3 L x 10 15 R i L=0 R=3 Đoạn cần xếp j Đoạn L=2 R=3 117 i=2, j=3 x L R 10 15 i j L=2 R=3 Đoạn cần xếp 118 10 15 Khơng cịn đoạn cần xếp! Kết thúc Đoạn cần xếp 119 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