Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
273,71 KB
Nội dung
Please purchase a personal license MỤC TIÊU Khái niệm xếp Phát biểu toán xếp Sắp xếp xếp Các phương pháp xếp đơn giản Phương pháp đổi chỗ liên tiếp Phương pháp lựa chọn Phương pháp chèn Phương pháp phân đoạn – Quick Sort Phương pháp vun đống – Heap Sort Phương pháp xếp trộn KHÁI NIỆM SẮP XẾP Đặt vấn đề Cho dãy số 21 44 52 73 81 81 52 73 21 44 81 73 52 44 21 Cho danh sách tên học sinh Hùng An Thắng Bình An Hoàng Bình Hùng Hoàng Thắng KHÁI NIỆM SẮP XẾP (TT) Khái niệm Sắp xếp việc biến đổi vị trí tập đối tượng theo trật tự nhằm thỏa mãn mục đích Mục đích Giúp việc tìm kiếm thực nhanh Sắp thứ tự để in bảng biểu BÀI TOÁN SẮP XẾP BÀI TOÁN Đầu vào: Dãy n đối tượng, đối tượng có khóa xếp Đầu ra: Dãy n đối tượng xếp theo trật tự khóa Ví dụ: Bài toán xếp dãy số tăng dần Đầu vào: Đầu ra: SẮP XẾP TRONG VÀ SẮP XẾP NGOÀI Sắp xếp trong: Dãy đối tượng có mặt đầy đủ nhớ (RAM) Sắp xếp mảng số, danh sách tuyến tính – Sắp chỗ Sắp xếp ngoài: Dãy đối tượng chưa có mặt đầy nhớ Sắp xếp liệu lưu tệp CÁC THUẬT TOÁN SẮP XẾP HAY GẶP Ba thuật toán xếp đơn giản Sắp xếp bọt (Bubble Sort) Sắp xếp lựa chọn (Selection Sort) Sắp xếp chèn (Insertion Sort) Thuật toán xếp phân đoạn (Quick Sort) Thuật toán xếp vun đống (Heap Sort) Thuật toán xếp trộn (Merge Sort) THUẬT TOÁN SẮP XẾP NỔI BỌT Ý tưởng giải thuật Dựa vào việc so sánh đổi chỗ (nếu cần) phần tử dãy đối tượng cần Ví dụ Cho dãy X có số nguyên (n=5) sau X0 X1 -1 X2 X3 X4 -4 Yêu cầu xếp dãy số theo chiều tăng dần THUẬT TOÁN SẮP XẾP NỔI BỌT Cách làm: duyệt so sánh cặp phần tử dãy, giả sử Xj Xj+1, trái thứ tự đổi chỗ X0 X1 -1 X2 X3 X4 -4 -1 -4 -1 -4 -1 -4 -1 -4 THUẬT TOÁN SẮP XẾP NỔI BỌT Nhận xét Sau lần duyệt vừa ta thấy phần tử lớn chuyển cuối dãy, nghĩa đứng vị trí Các phần tử lại chưa thứ tự Làm đây? X0 X1 X2 X3 X4 -1 -4 -1 -4 -1 -4 -1 -4 THUẬT TOÁN SẮP XẾP CHÈN Đưa ý tưởng vào toán xếp: Xem dãy cần gồm dãy nối tiếp Dãy trái (dãy đích) gồm phần tử sắp, dãy phải (dãy nguồn) phần tử chưa X0 Dãy đích X1 -1 X2 X3 -4 Dãy nguồn X4 THUẬT TOÁN SẮP XẾP CHÈN Đưa ý tưởng vào toán Lấy phần tử đầu dãy nguồn chèn vào vị trí thích hợp dãy đích tam -1 -1 -1 -4 -4 -4 THUẬT TOÁN SẮP XẾP CHÈN tam tam -1 -4 -1 -4 -1 -4 -1 -1 -4 -4 THUẬT TOÁN SẮP XẾP CHÈN tam -4 -1 -4 -1 -4 -1 5 7 Super THUẬT TOÁN SẮP XẾP CHÈN Ví dụ Cho dãy số nguyên sau X0 53 X1 -21 X2 67 X3 15 X4 60 X5 40 Yêu cầu: Dựa vào ý tưởng trên, minh họa việc xếp dãy số theo chiều giảm dần THUẬT TOÁN SẮP XẾP CHÈN Giải thuật Thực n-1 lần “chia” dãy thành dãy đích dãy nguồn Mỗi lần chia lấy phần tử đầu dãy nguồn (giả sử Xi (I=1->N-1)), chèn vào vị trí thích hợp dãy đích void sort(int X[ ], int n) { for (int i=1; i-1 && X[j]>tam) { X[j+1]=X[j]; j=j-1; } X[j+1]=tam; } } THUẬT TOÁN SẮP XẾP CHÈN Ứng dụng Viết chương trình thực việc sau Nhập vào dãy n số nguyên (0[...]... sắp X0 3 Dãy đích X1 -1 X2 7 X3 -4 Dãy nguồn X4 5 THUẬT TOÁN SẮP XẾP CHÈN Đ a ý tưởng vào bài toán Lấy phần tử đầu dãy nguồn chèn vào vị trí thích hợp trong dãy đích tam -1 3 -1 -1 7 -4 5 3 7 -4 5 3 7 -4 5 THUẬT TOÁN SẮP XẾP CHÈN tam 7 tam -1 3 7 -4 5 -1 3 7 -4 5 -1 3 7 -4 5 -1 3 7 5 -1 3 7 5 -4 -4 THUẬT TOÁN SẮP XẾP CHÈN tam -4 -1 3 -4 -1 3 -4 -1 3 7 5 5 7 5 7 Super THUẬT TOÁN SẮP XẾP CHÈN Ví dụ 2 Cho... 3 X1 -1 X2 7 X3 5 X4 -4 Yêu cầu sắp xếp dãy số theo chiều tăng dần THUẬT TOÁN SẮP XẾP L A CHỌN Cách làm: Chọn phần tử có giá trị nhỏ nhất, giả sử là Xm, đổi chỗ cho phần tử đầu dãy là Xi 3 -1 5 7 -4 -4 -1 5 7 3 -4 -1 5 7 3 -4 -1 5 7 3 Làm mấy lần? THUẬT TOÁN SẮP XẾP L A CHỌN -4 -1 5 7 3 -4 -1 3 7 5 -4 -1 3 7 5 -4 -1 3 5 7 THUẬT TOÁN SẮP XẾP L A CHỌN Ví dụ 2 Cho dãy số nguyên như sau X0 53 X1 -2 1 X2... (n=5) như sau X0 3 X1 -1 X2 7 X3 -4 X4 5 Yêu cầu sắp xếp dãy số theo chiều tăng dần THUẬT TOÁN SẮP XẾP CHÈN Bài toán thể hiện ý tưởng: Cho dãy được sắp tăng dần -5 Chèn số -5 -1 1 2 4 vào dãy -1 2 4 2 4 1 -5 -1 1 THUẬT TOÁN SẮP XẾP CHÈN Đ a ý tưởng vào bài toán sắp xếp: Xem dãy cần sắp gồm 2 dãy nối tiếp Dãy trái (dãy đích) gồm các phần tử được sắp, dãy phải (dãy nguồn) là các phần tử ch a được sắp X0...THUẬT TOÁN SẮP XẾP NỔI BỌT Đến đây ta được hai phần tử đứng đúng vị trí, các phần tử còn lại thì không Vậy phải làm mấy lần n a? Hai lần n a, ta được dãy sắp theo chiều tăng dần X0 -4 X1 -1 Ôi chà… dễ ợt…! X2 3 X3 5 X4 7 THUẬT TOÁN SẮP XẾP NỔI BỌT Ví dụ 2: Cho dãy số sau X0 -3 5 X1 41 X2 23 X3 15 X4 -6 2 X5 71 Yêu cầu: Minh h a quá trình sắp xếp dãy theo chiều giảm dần d a vào ý tưởng trên THUẬT TOÁN... X[m]=X[i]; X[i]=tg; } THUẬT TOÁN SẮP XẾP L A CHỌN Ứng dụng Viết chương trình thực hiện các việc sau Nhập vào một dãy n số nguyên (0tam) { X[j+1]=X[j]; j=j-1; } X[j+1]=tam; } } THUẬT TOÁN SẮP XẾP CHÈN Ứng dụng Viết chương trình thực hiện các việc sau Nhập vào một dãy n số nguyên (0