THUẬT TOÁN BUBBLE SORT • Ý tưởng của thuật toán • Ví dụ minh họa • Minh họa thuật toán sử dụng ngôn ngữ C++ • Đánh giá thuật toán 1. Ý tưởng của thuật toán bubble sort Thuật toán sắp xếp bubble sort thực hiện sắp xếp dãy số bằng cách lặp lại công việc đổi chỗ 2 số liên tiếp nhau nếu chúng đứng sai thứ tự (số sau bé hơn số trước với trường hợp sắp xếp tăng dần) cho đến khi dãy số được sắp xếp. 2. Ví dụ minh họa Giả sử chúng ta cần sắp xếp dãy số 5 1 4 2 8 này tăng dần. Lần lặp đầu tiên: ( 5 1 4 2 8 ) –> ( 1 5 4 2 8 ), Ở đây, thuật toán sẽ so sánh hai phần tử đầu tiên, và đổi chỗ cho nhau do 5 > 1. ( 1 5 4 2 8 ) –> ( 1 4 5 2 8 ), Đổi chỗ do 5 > 4 ( 1 4 5 2 8 ) –> ( 1 4 2 5 8 ), Đổi chỗ do 5 > 2 ( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ), Ở đây, hai phần tử đang xét đã đúng thứ tự (8 > 5), vậy ta không cần đổi chỗ.
BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG - BÀI TIỂU LUẬN HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CÁC THUẬT TOÁN SẮP XẾP ĐƠN GIẢN Nhóm: 16 Nguyễn Đình Linh- B17DCCN376 Đồn Đức Toàn- B17DCCN607 Trần Khánh Tùng- B17DCCN667 Bùi Đăng Quang-B17DCCN502 Hà Nội, ngày 05 tháng 05 năm 2019 Mục lục Mục lục: …………………………………………………………………… Bubble sort:…………………………………………………………………… Insertion sort:………………………………………………………………… Selection sort:………………………………………………………………… Tài liệu tham khảo:……………………………………………………………12 THUẬT TOÁN BUBBLE SORT • Ý tưởng thuật tốn • Ví dụ minh họa • Minh họa thuật tốn sử dụng ngơn ngữ C++ • Đánh giá thuật tốn Ý tưởng thuật toán bubble sort Thuật toán xếp bubble sort thực xếp dãy số cách lặp lại công việc đổi chỗ số liên tiếp chúng đứng sai thứ tự (số sau bé số trước với trường hợp xếp tăng dần) dãy số xếp Ví dụ minh họa Giả sử cần xếp dãy số [5 8] tăng dần Lần lặp đầu tiên: ( ) –> ( ), Ở đây, thuật toán so sánh hai phần tử đầu tiên, đổi chỗ cho > ( ) –> ( ), Đổi chỗ > ( ) –> ( ), Đổi chỗ > ( ) –> ( ), Ở đây, hai phần tử xét thứ tự (8 > 5), ta không cần đổi chỗ Lần lặp thứ 2: ( ) –> ( ) ( ) –> ( ), Đổi chỗ > ( ) –> ( ) ( ) –> ( ) Bây giờ, dãy số xếp, Nhưng thuật toán khơng nhận điều Thuật tốn cần thêm lần lặp để kết luận dãy xếp khi từ đầu tới cuối mà khơng có lần đổi chỗ thực Lần lặp thứ 3: ( ) –> ( ) ( ) –> ( ) ( ) –> ( ) ( ) –> ( ) 3 Minh họa thuật tốn sử dụng ngơn ngữ C++ + Vd1: #include if (flag == false){ //nếu khơng có lần đổi chỗ nào, danh sách xếp xong using namespace std; break; void input_func(int A[], int &n) { } cout > n; { i = i - 1; for (int i = 0; i