Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 71 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
71
Dung lượng
2,65 MB
Nội dung
CHƯƠNG 4: SắPXếP(SORTING) Nội dung Tổng quan Các phương pháp sắpxếp thông dụng Chương 4: Sắpxếp 2 Tổng quan Tại sao phải sắp xếp? Để có thể sử dụng thuật toán tìm nhị phân Để thực hiện thao tác nào đó được nhanh hơn Định nghĩa bài toán sắpxếp Sắpxếp là quá trình xử lý một danh sách các phần tử để đặt chúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó dựa trên nội dung thông tin lưu giữ tại mỗi phần tử Chương 4: Sắpxếp 3 Các phương pháp sắpxếp thông dụng Phương pháp Đổi chỗ trực tiếp (Interchange sort) Phương pháp Nổi bọt (Bubble sort) Phương pháp Chèn trực tiếp (Insertion sort) Phương pháp Chọn trực tiếp (Selection sort) Phương pháp dựa trên phân hoạch (Quick sort) Chương 4: Sắpxếp4 Interchange Sort Khái niệm nghịch thế: Xét một mảng các số a[0], a[1], … a[n-1] Nếu có i<j và a[i] > a[j], thì ta gọi đó là một nghịch thế Mảng chưa sắpxếp sẽ có nghịch thế Mảng đã có thứ tự sẽ không chứa nghịch thế a[0] ≤ a[1] ≤ … ≤ a[n -1] 5 Chương 4: Sắpxếp Interchange Sort – Ý tưởng Nhận xét: Để sắpxếp một dãy số, ta có thể xét các nghịch thế có trong dãy và làm triệt tiêu dần chúng đi Ý tưởng: Xuất phát từ đầu dãy, tìm tất cả nghịch thế chứa phần tử này, triệt tiêu chúng bằng cách đổi chỗ phần tử này với phần tử tương ứng trong cặp nghịch thế Lặp lại xử lý trên với các phần tử tiếp theo trong dãy Chương 4: Sắpxếp 6 Interchange Sort – Ví dụ 2 8 5 1 6 4 1512 1 2 3 4 5 6 70 i j 1 Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắpxếp 7 12 8 5 2 6 4 151 1 2 3 4 5 6 70 i j 2 Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Interchange Sort – Ví dụ Chương 4: Sắpxếp 8 Interchange Sort – Ví dụ 2 12 8 5 6 4 151 1 2 3 4 5 6 70 i j 4 Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắpxếp 9 Interchange Sort – Ví dụ 2 4 12 8 6 5 151 1 2 3 4 5 6 70 i j 5 Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắpxếp 10 [...]... được sắp Insertion Sort – Ví dụ 31 0 1 2 3 4 5 6 7 12 2 8 5 1 6 4 15 Insertion Sort – Ví dụ 32 Chèn a[1] vào (a[0], a[1]) 0 pos 1 2 3 4 5 6 7 12 2 2 8 5 1 6 4 15 i x Insertion Sort – Ví dụ 33 Chèn a[2] vào (a[0] … a[2]) 0 1 pos 2 2 8 12 8 3 x 5 6 7 5 i 4 1 6 4 15 Insertion Sort – Ví dụ 34 Chèn a[3] vào (a[0] … a[3]) 0 1 2 pos 3 2 8 5 12 5 i x 4 5 6 7 1 6 4 15 Insertion Sort – Ví dụ 35 Chèn a [4] vào... – Ví dụ 21 0 1 2 3 4 5 6 j 7 1 2 4 5 6 12 8 6 15 i Nếu a[j]