Cấu trúc dữ liệu và giải thuật chương 2 2 giải thuật sắp xếp

110 1.4K 0
Cấu trúc dữ liệu và giải thuật   chương 2 2  giải thuật sắp xếp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 2.2 Giải thuật xếp * * Nắm vững, minh họa tính toán phép gán (hoán vị) giải thuật xếp mảng chiều Cài đặt giải thuật ngôn ngữ C/C++ * 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 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ị) *Đổi chổ trực tiếp – Interchange Sort *Chọn trực tiếp – Selection Sort *Chèn trực tiếp – Insertion Sort *Quick Sort *Nổi bọt – Buble Sort *Một số giải thuật khác đọc thêm tài liệu *Ý 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 Giả sử cần xếp dãy số sau tăng dần Bước 1: Xét phần tử (tại vị trí 1) i j Bước 1: Xét phần tử (tại vị trí 1) i j 8 Bước 1: Xét phần tử (tại vị trí 1) i j Bước 1: Xét phần tử (tại vị trí 1) i j 10 Đánh giá giải thuật *Trong trường hợp, số phép so sánh là: (n-1) + (n-2) + … + = n(n-1)/2 = O(n2) *Số phép hoán vị: *Trường hợp xấu nhất: n(n-1)/2 *Trường hợp tốt nhất: 96 *“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 97 *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) 98 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 99 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 100 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 101 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 102 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 103 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 104 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 105 10 15 Không đoạn cần xếp! Kết thúc Đoạn cần xếp 106 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[...]... hai (tại vị trí 2) 1 2 i 3 4 j 5 6 7 8 17 Bước 2: Xét phần tử thứ hai (tại vị trí 2) 1 2 i 3 4 5 j 6 7 8 18 Bước 2: Xét phần tử thứ hai (tại vị trí 2) 1 2 i 3 4 5 6 j 7 8 19 Bước 2: Xét phần tử thứ hai (tại vị trí 2) 1 2 i 3 4 5 6 7 j 8 20 Bước 2: Xét phần tử thứ hai (tại vị trí 2) Kết thúc bước 2 1 2 i 3 4 5 6 7 8 j 21 Bước 3: Xét phần tử thứ ba (tại vị trí 3) 1 2 i 3 4 j 5 6 7 8 22 Bước 3: Xét phần... vị trí 1) 1 i 2 3 4 5 j 6 7 8 11 Bước 1: Xét phần tử đầu tiên (tại vị trí 1) 1 i 2 3 4 5 6 j 7 8 12 Bước 1: Xét phần tử đầu tiên (tại vị trí 1) 1 i 2 3 4 5 6 7 j 8 13 Bước 1: Xét phần tử đầu tiên (tại vị trí 1) Kết thúc bước 1 1 i 2 3 4 5 6 7 8 j 14 Bước 2: Xét phần tử thứ hai (tại vị trí 2) 1 i 2 3 j 4 5 6 7 8 15 Bước 2: Xét phần tử thứ hai (tại vị trí 2) 1 2 i 3 j 4 5 6 7 8 16 Bước 2: Xét phần tử... thứ ba (tại vị trí 3) 1 2 3 i 4 j 5 6 7 8 23 Bước 3: Xét phần tử thứ ba (tại vị trí 3) 1 2 3 i 4 5 j 6 7 8 24 Bước 3: Xét phần tử thứ ba (tại vị trí 3) 1 2 3 i 4 5 6 j 7 8 25 Bước 3: Xét phần tử thứ ba (tại vị trí 3) 1 2 3 i 4 5 6 7 j 8 26 Bước 3: Xét phần tử thứ ba (tại vị trí 3) Kết thúc bước 3 1 2 3 i 4 5 6 7 8 j 27 Bước 4: Xét phần tử thứ tư (tại vị trí 4) 1 2 3 i 4 5 j 6 7 8 28 Bước 4: Xét phần tử... phần tử thứ tư (tại vị trí 4) 1 2 3 4 i 5 j 6 7 8 29 Bước 4: Xét phần tử thứ tư (tại vị trí 4) 1 2 3 4 i 5 6 j 7 8 30 Bước 4: Xét phần tử thứ tư (tại vị trí 4) 1 2 3 4 i 5 6 7 j 8 31 Bước 4: Xét phần tử thứ tư (tại vị trí 4) Kết thúc bước 4 1 2 3 4 i 5 6 7 8 j 32 Bước 5: Xét phần tử thứ năm (tại vị trí 5) 1 2 3 4 i 5 6 j 7 8 33 Bước 5: Xét phần tử thứ năm (tại vị trí 5) 1 2 3 4 5 i 6 j 7 8 34 Bước 5:... tử thứ năm (tại vị trí 5) 1 2 3 4 i 5 6 j 7 8 33 Bước 5: Xét phần tử thứ năm (tại vị trí 5) 1 2 3 4 5 i 6 j 7 8 34 Bước 5: Xét phần tử thứ năm (tại vị trí 5) 1 2 3 4 5 i 6 7 j 8 35 Bước 5: Xét phần tử thứ năm (tại vị trí 5) Kết thúc bước 5 1 2 3 4 5 i 6 7 8 j 36 ... (tại vị trí 2) i j 20 Bước 2: Xét phần tử thứ hai (tại vị trí 2) Kết thúc bước 2 i j 21 Bước 3: Xét phần tử thứ ba (tại vị trí 3) i j 22 Bước 3: Xét phần tử thứ ba (tại vị trí 3) i j 23 Bước 3:... hai (tại vị trí 2) i j 16 Bước 2: Xét phần tử thứ hai (tại vị trí 2) i j 17 Bước 2: Xét phần tử thứ hai (tại vị trí 2) i j 18 Bước 2: Xét phần tử thứ hai (tại vị trí 2) i j 19 Bước 2: Xét phần tử...* * Nắm vững, minh họa tính toán phép gán (hoán vị) giải thuật xếp mảng chiều Cài đặt giải thuật ngôn ngữ C/C++ * Sắp xếp trình xử lý danh sách phần tử * (hoặc mẫu tin) để đặt chúng

Ngày đăng: 04/12/2015, 01:04

Mục lục

  • Slide 1

  • Mục tiêu

  • Các khái niệm

  • Các giải thuật sắp xếp cơ bản

  • Đổi chổ trực tiếp – interchange sort

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan