Tải bản đầy đủ (.pptx) (16 trang)

Bai 4 Bai Toan va thuat toan tt tiet 15 Exchange Sort

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.57 MB, 16 trang )

<span class='text_page_counter'>(1)</span>TRƯỜ NG THPT PHÚ MỸ. Bµi gi¶ng. BÀI 4. BÀI TOÁN VÀ THUẬT TOÁN (TT). Giáo viên: Phan Thanh Hưởng.

<span class='text_page_counter'>(2)</span> . CÂU HỎI ÔN TẬP. Các hình sau đây hiện thao tác Có Emmáy hãycách nêu khái biểuthể niệm diễn thuật thuật gì? toán? toán? Là các thao tác được Cómột 2 dãy hữu hạn Nhập/xuấ Sơ đồ Liệt kê sắp xếp định sao cách : theo mộtt trình tự xác khối B1… cho sau khi thực hiện dãy thao tác ấy, B2… từ Input của bài toán, ta nhận được So sánh Output cần tìm.B3… . Bn.Tính . . toán Trình tự thực hiện.

<span class='text_page_counter'>(3)</span> VÍ DỤ 2. BÀI TOÁN SẮP XẾP. Cho dãy A gồm N số nguyên a1,a2 ,..,aN . Cần sắp xếp các số hạng dãy A trở thành dãy không giảm. Thuật toán sắpAxếp bằng tráo (Exchange Sort) Ví dụ: dãy gồm các số đổi nguyên : 6, 1, 1) định 3,Xác 5, 3, 10,bài 7 sau khi sắp xếp ta có toán gồm dãy : 1, Dãy 3, 3,A 5, 6, N 7,số 10nguyên ,..,a 1,a2 A N Dãy được sắp xếp thành dãy -Input: Output: a không giảm 2) Ý tưởng: Với mỗi cặp số hạng đứng kề Ý nhau, nếu số đứng trước lớn hơn số đứng tưởng? sau ta đổi chổ chúng cho nhau. Lặp lại cho đến khi không còn đổi chổ nào xảy ra nữa..

<span class='text_page_counter'>(4)</span> 6 1 3 5 3 10 7 1 6 3 5 3 10 7 1 3 6 5 3 10 7 1 3 5 6 3 10 7 1 3 5 3 6 10 1 3 10. 5. 3. 6. 7. 7.

<span class='text_page_counter'>(5)</span> 3) Thuật toán Mô phỏng thực tế a) Cách liệt kê Bước 1. Nhập N, các số hạng a1,a2,..,aN Bước 2. M  N ; Bước 3. Nếu M<2 ,dãy A đã được sắp xếp, kết thúc; Bước 4. MM-1, i0; Bước 5. ii+1; Bước 6. Nếu i>M thì quay lại bước 3; Bước 7. Nếu ai > ai+1 thì hoán đổi ai và ai+1; Bước 8. Quay lại bước 5..

<span class='text_page_counter'>(6)</span> a) Sơ đồ khối. Nhập N và a1,a2,..,aN MN Đúng M<2? Sai MM-1; i0 ii+1 Đúng. Tráo đổi ai và ai+1. Đúng. i>M? Sai ai>ai+ 1 ? Sai. Đưa ra dãy A rồi kết thúc.

<span class='text_page_counter'>(7)</span> a) Cách liệt kê B1. Nhập N, các số a1,a2,..,aN. b)Sơ đồ khối. Nhập N và a1,a2,..,aN. MN. B2. M  N ;. M<2 ?. B3. Nếu M<2 ,dãy A được sx, kết B4. thúc; MM-1, i0;. Sai MM-1; i0. ’. ii+1. B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 hoán đổi ai và ai+1; B8. Quay lại b5.. Đúng. Đúng. Đúng Tráo đổi ai và ai+1. i>M ? Sai ai>ai+ 1 ? Sa i. Đưa ra dãy A được sx, kết thúc.

<span class='text_page_counter'>(8)</span> MÔ TẢ THUẬT TOÁN. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 6. 6. B1. Nhập N, a1,a2,..,aN B2. M  N ; B3. Nếu M<2, dãy A được sx, kt; B4. MM-1, i0; B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 , hoán đổi ai và ai+1; B8. Quay lại b5..

<span class='text_page_counter'>(9)</span> Lần duyệt thứ nhất. 1. i. 2. 3. 4. 5. 6. M. N=6 B1. Nhập N, a1,a2,..,aN B2. M  N ; B3. Nếu M<2, dãy A được sx, kt; B4. MM-1, i0; B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 , hoán đổi ai và ai+1;.

<span class='text_page_counter'>(10)</span> N=6. Lần duyệt thứ hai. 1. i. 2. 3. 4. 5. 6. Mi. B1. Nhập N, a1,a2,..,aN B2. M  N ; B3. Nếu M<2, dãy A được sx, kt; B4. MM-1, i0; B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 , hoán đổi ai và ai+1;.

<span class='text_page_counter'>(11)</span> N=6. Lần duyệt thứ ba. 1. i. 2. 3. 4. 5. Mi. 6. B1. Nhập N, a1,a2,..,aN B2. M  N ; B3. Nếu M<2, dãy A được sx, kt; B4. MM-1, i0; B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 , hoán đổi ai và ai+1;.

<span class='text_page_counter'>(12)</span> Lần duyệt thứ năm tư. 1. i. 2. 3. 4. M i. 5. 6. N=6 B1. Nhập N, a1,a2,..,aN B2. M  N ; B3. Nếu M<2, dãy A được sx, kt; B4. MM-1, i0; B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 , hoán đổi ai và ai+1;.

<span class='text_page_counter'>(13)</span> Nhận xét thuật toán - Ta thấy quá trình so sánh và đổi chỗ sau mỗi lần duyệt chỉ thực hiện với dãy đã bỏ bớt số hạng cuối dãy. Biến M làm điều này, M có giá trị khởi tạo là N, sau mỗi lần duyệt M giảm một đơn vị cho đến khi M<2 - i là biến chỉ số thay đổi lần lượt từ 0 đến M+1. B1. Nhập N, a1,a2,..,aN B2. M  N ; B3. Nếu M<2, dãy A được sx, kt; B4. MM-1, i0; B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 , hoán đổi ai và ai+1; B8. Quay lại b5..

<span class='text_page_counter'>(14)</span> * Câu hỏi cũng cố kiến thức Từ thuật toán sắp xếp dãy không giảm bên theo em cần sửa đổi bước nào để trở thành thuật toán sắp xếp dãy không tăng?. ai < ai+1. a) Cách liệt kê B1. Nhập N, các số a1,a2,..,aN B2. M  N ; B3. Nếu M<2 ,dãy A được sx, kết B4. MM-1, i0; thúc; B5. ii+1; B6. Nếu i>M, quay lại b3; B7. Nếu ai > ai+1 hoán đổi ai và ai+1; B8. Quay lại b5. ’.

<span class='text_page_counter'>(15)</span> Bài tập ứng dụng Cho dãy A gồm N số nguyên a1,a2 ,..,aN . Cần sắp xếp các số hạng dãy A sao cho số chẵn đứng trước số lẻ đứng sau..

<span class='text_page_counter'>(16)</span>

<span class='text_page_counter'>(17)</span>

×