THÂN CHÀO TẬP THỂ LỚP VÀ QUÝ THẦY CÔ GIÁO 06/27/13 BÀI 4: GIỚI THIỆU THUẬTTOÁN Tiết 13: Bài toánsắpxếp GVTH: Nguyễn Ngọc Giao Ngôn Giới thiệu bài toánsắpxếp Những việc hằng ngày liên quan đến sắpxếp : Sắpxếp sách vở . Xếp hàng chào cờ . Sắpxếp tên học sinh . Xếp điểm trung bình của học sinh . . . . . . . Làm sao máy tính sắpxếp được như chúng ta ? Nạp chương trình sắpxếp vào máy. Xây dựng thuật toánsắpxếp cho máy. Giới thiệu bài toánsắpxếp Ta xét bài toán dạng đơn giản sau : Cho dãy số nguyên A gồm n phần tử : a 1 , a 2 , a 3 , . . . , a n Vấn đề đặt ra là cần bố trí lại các phần tử của A sao cho sau khi sắpxếp xong thì A trở thành dãy không giảm , nghóa là điều kiện a i a i+1 với 0 <i<n. Ví dụ : dãy A có 6 phần tử :15 ; 8 ; 12 ; 11 ; 13 ; 9 dãy sau khi sắp xếp: 8 ; 9 ; 11 ; 12 ; 13 ; 15 ≤ 15 8 12 11 13 9 Nhận xét: Tiến hành duyệt từ trái sang với hai số đứng liền kề nhau nếu số đứng sau bé hơn số đứng trước thì tiến hành đổi chỗ. Sau mỗi lần đổi chỗ ,Phần tử lớn nhất sẽ chuyển dần về cuối dãy. Sau một lần duyệt ,Phần tử lớn nhất sẽ nằm ở cuối dãy. Việc đó lặp đi lặp lại cho đến khi mọi phần tử trong dãy đều đã xếp đúng thứ tự (số đứng sau không bé hơn số đứng trước) Quan sát và cho nhận xét cách sắpxếp trên 15 8 12 11 13 915 8 12 11 13 9 Nhập vào N và dãy N phần tử. Dùng biến i để thực hiện việc so sánh các phần tử kề nhau từ trái qua ,Nếu a i >a i+1 thì tráođổi và tăng i lên để so sánh với phần tử tiếp theo. Dùng biến M để kiểm tra quá trình sắpxếp ,ban đầu M=N,khi i > M thì kết thúc một lần duyệt ;sau một lần duyệt thì số phần tử chưa sắpxếp giảm đi 1 tức là M giảm đi 1. Khi M=1 (chỉ còn một phần tử chưa sắp xếp),đưa ra dãy đã sắpxếp rồi kết thúc. Bước 1: Nhập N và các số hạng a 1 , a 2 ,. . . , a N Bước 2: M N Bước 3: Nếu M < 2 thì đưa ra dãy A đã được sắpxếp rồi 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 a i >a i+1 thì hoán đổi a i và a i+1 cho nhau. Bước 8: Quay lại bước 5. Nhập N và a 1 ,a 2 ,. . . . ,a n Hoán vò a i và a i+1 Đưa ra A rồi kết thúc Đúng Sai M < 2 i > M ? a i > a i+1 M N M M-1; i 0 i i +1 Sai Đúng Sai Đúng Sai Đưa ra A rồi kết thúc Đúng M < 2 Sai i > M ? M = M = ; i = i = Sai Đúng Đúng Dãy 6 phần tử 15;8;12;11;13;9 6 a 1 > a 2 Hoán vò a 1 và a 2 15 8 5 0 5 15 8 12 11 13 9 1 2 a 2 > a 3 Hoán vò a 2 và a 3 15 12 3 a 3 > a 4 Hoán vò a 3 và a 4 15 11 4 a 4 > a 5 Hoán vò a 4 và a 5 15 13 a 5 > a 6 Hoán vò a 5 và a 6 15 9 6 4 1 a 1 > a 2 8 12 2 a 2 > a 3 Hoán vò a 2 và a 3 12 11 3 a 3 > a 4 12 13 4 a 4 > a 5 Hoán vò a 4 và a 5 13 9 5 3 1 a 1 > a 2 8 11 2 a 2 > a 3 11 12 3 a 3 > a 4 Hoán vò a 3 và a 4 12 9 4 2 1 a 1 > a 2 8 11 2 a 2 > a 3 Hoán vò a 2 và a 3 11 9 3 1 1 a 1 > a 2 8 9 2 CỦNG CỐ Giả sử ta có danh sách tên học sinh của một tổ học tập là: Tuấn ; Phan ; Nam ; Hà ; Lan ; Bình ; Xuân. Câu 1: Danh sách nào dưới đây là kết quả sau lần duyệt thứ nhất khi thực hiện thuật toánsắpxếp Bubble sort. a. Tuấn ; Phan ; Nam ; Hà ; Lan ; Bình ; Xuân. b. Phan ; Tuấn ; Hà ; Nam ; Bình ; Lan ; Xuân. c. Phan ; Nam ; Hà ; Lan ; Bình ; Tuấn ; Xuân. d. Xuân ; Tuấn ; Phan ; Nam ; Hà ; Lan ; Bình. Nam Hà Lan Bình XuânTuấn Phan Trả lời Đáp án : C Câu 2: Với danh sách trên ,thuật toán cần phải thực hiện bao nhiêu lần duyệt danh sách ? Nam Hà Lan Bình XuânTuấn Phan LẦN DUYỆT THỨ ĐÁP ÁN : D A. 4 lần C. 6 lần B. 5 lần D. 7 lần . THIỆU THUẬT TOÁN Tiết 13: Bài toán sắp xếp GVTH: Nguyễn Ngọc Giao Ngôn Giới thiệu bài toán sắp xếp Những việc hằng ngày liên quan đến sắp xếp : Sắp xếp. chúng ta ? Nạp chương trình sắp xếp vào máy. Xây dựng thuật toán sắp xếp cho máy. Giới thiệu bài toán sắp xếp Ta xét bài toán dạng đơn giản sau : Cho