Bài giảng Cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp nổi bọt, chèn, chọn - TS. Trần Ngọc Việt
Số trang: 30
Loại file: pdf
Dung lượng: 3.20 MB
Lượt xem: 15
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp nổi bọt, chèn, chọn gồm các nội dung chính sau giới thiệu về giải thuật sắp xếp nổi bọt, chèn, chọn; bài toán sắp xếp; các thuật toán sắp xếp đơn giản; các bước thuật toán; cài đặt thuật toán bubble sort. Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp nổi bọt, chèn, chọn - TS. Trần Ngọc Việt 2 KHOA CÔNG NGHỆ THÔNG TIN 3 KHOA CÔNG NGHỆ THÔNG TIN 34 3 4 8 // a[0], a[1] là cặp nghịch thế 4 KHOA CÔNG NGHỆ THÔNG TIN 5 KHOA CÔNG NGHỆ THÔNG TIN 6 KHOA CÔNG NGHỆ THÔNG TIN 7 KHOA CÔNG NGHỆ THÔNG TIN • Cho 1 dãy các phần tử như sau: {5, 1, 6, 2, 4, 3} Lượt 1 Lượt 2 Lượt 3 5 1 6 2 4 3 1 5 2 4 3 6 1 2 4 3 5 6 1 5 6 2 4 3 1 2 5 4 3 6 1 2 3 4 5 6 1 5 2 6 4 3 1 2 4 5 3 6 1 2 3 4 5 6 1 5 2 4 6 3 1 2 4 3 5 6 1 2 3 4 5 6 1 5 2 4 3 6 1 2 4 3 5 6 1 2 3 4 5 6 8 KHOA CÔNG NGHỆ THÔNG TIN Input: Dãy các đối tượng (Các số chưa sắp xếp): A[0], A[1],…,A[n-1]. Output: Dãy các đối tượng đã được sắp xếp (Các số tăng dần): A[0], A[1],…,A[n-1] Actions: void BubbleSort(int a[],int n) { int i, j; for (i = 0 ; i< n-1 ; i++) for (j =i ; j > n-1 ; j ++) if(a[j]< a[j1]) // nếu sai vị trí thì đổi chỗ Swap(a[j], a[j+1]); } End 9 KHOA CÔNG NGHỆ THÔNG TIN #Giải thuật Nổi bọt - Bubble Sort: B.1: Gán i = 0 B.2: Gán j = 0 //danh sách có n phần tử a0,a1,a2…,an-1 B.3: Nếu A[j] > A[j + 1] thì Hoán đối chỗ giữa A[j] và A[j + 1] B.4: Nếu (j < n – i – 1): -Đúng thì j = j + 1 và quay lui bước 3 -Sai thì chuyển sang bước 5 B.5: Nếu (i < n – 1): -Đúng thì i = i + 1 và quay lui bước 2 -Sai thì dừng Kết Thúc. 10 KHOA CÔNG NGHỆ THÔNG TIN Bài tập 1: Áp dụng giải thuật sắp xếp Nổi bọt – Bubble Sort. Cho Mảng A = [19,13,6] +B.1: i = 0; B.2: j = 0; B.3: nếu A[j] > A[j+1] (A[0] > A[1]; 19 > 13) thì Hoán đổi giữa 19 và 13 [13,19,6]; B.4: nếu j < (n-i-1) (0 < (2-0-1)) : Đúng thì j = j+1= 0+1= 1 và quay lui B.3; +B.3: nếu A[j] > A[j+1] (A[1] > A[2]; 19 > 6) thì Hoán đổi giữa 19 và 6 [13, 6,19]; B.4: nếu j < (n-i-1) (1 < (2-0-1)): Sai thì chuyển sang B.5 ---------- #Giải thuật Nổi bọt - Bubble Sort: B.5: nếu i < (n-1) (0 < 1): Đúng thì i =i+1 = 0 +1 = 1 và quay lại B.2 B.1: Gán i = 0 +B.2: j = 0 (i= 1) ; B.2: Gán j = 0 B.3: nếu A[0] > A[1] (13 > 6) thì Hoán đổi giữa 13 và 6 B.3: Nếu A[j] > A[j + 1] thì Hoán đối chỗ giữa A[j] và A[j + 1] B.4: Nếu (j < n – i – 1): [6, 13,19] ; -Đúng thì j = j + 1 và quay lui bước 3 B.4: Nếu (j < n – i – 1) (0 < 0) : Sai thì chuyển sang B.5 -Sai thì chuyển sang bước 5 B.5: Nếu (i < n – 1) (1 < 1): Sai thì Dừng Kết thúc. B.5: Nếu (i < n – 1): Vậy mảng được sắp xếp là: -Đúng thì i = i + 1 và quay lui bước 2 [6, 13,19]. -Sai thì dừng Kết Thúc. ---------- 11 KHOA CÔNG NGHỆ THÔNG TIN Bài tập 2: Áp dụng giải thuật sắp xếp Nổi bọt – Bubble Sort. Thực hiện sắp xếp mảng: A = [39, 25, 16, 20] 12 KHOA CÔNG NGHỆ THÔNG TIN * Đánh giá độ phức tạp - thuật toán Bubble Sort void BubbleSort() { int i, j ; for (i = 2; i = i; j--) if (a[j-1] > a[j]) //hoán chuyển swap(&a[j-1], &a[j]); } 13 KHOA CÔNG NGHỆ THÔNG TIN 14 KHOA CÔNG NGHỆ THÔNG TIN -Sắp xếp chèn là một giải thuật sắp xếp dựa trên so sánh tại chỗ. -Một danh sách con luôn luôn được duy trì dưới dạng đã qua sắp xếp. Sắp xếp chèn là chèn thêm một phần tử vào danh sách con đã qua sắp xếp. -Phần tử được chèn vào vị trí thích hợp sao cho vẫn đảm bảo rằng danh sách con đó vẫn sắp xếp theo thứ tự. -Giải thuật này không thích hợp sử dụng với các tập dữ liệu lớn khi độ phức tạp trường hợp xấu nhất và trường hợp trung bình là Ο(n2) với n là số phần tử. 15 KHOA CÔNG NGHỆ THÔNG TIN Ví dụ: cho một mảng gồm các phần tử không có thứ tự: 14 – 33 – 27 – 10 – 35 – 19 – 42 - 44 -Giải thuật sắp xếp chèn so sánh hai phần tử đầu tiên: 14 – 33 – 27 – 10 – 35 – 19 – 42 - 44 -Giải thuật tìm ra rằng cả 14 và 33 đều đã trong thứ tự tăng dần. Bây giờ, 14 là trong danh sá ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp nổi bọt, chèn, chọn - TS. Trần Ngọc Việt 2 KHOA CÔNG NGHỆ THÔNG TIN 3 KHOA CÔNG NGHỆ THÔNG TIN 34 3 4 8 // a[0], a[1] là cặp nghịch thế 4 KHOA CÔNG NGHỆ THÔNG TIN 5 KHOA CÔNG NGHỆ THÔNG TIN 6 KHOA CÔNG NGHỆ THÔNG TIN 7 KHOA CÔNG NGHỆ THÔNG TIN • Cho 1 dãy các phần tử như sau: {5, 1, 6, 2, 4, 3} Lượt 1 Lượt 2 Lượt 3 5 1 6 2 4 3 1 5 2 4 3 6 1 2 4 3 5 6 1 5 6 2 4 3 1 2 5 4 3 6 1 2 3 4 5 6 1 5 2 6 4 3 1 2 4 5 3 6 1 2 3 4 5 6 1 5 2 4 6 3 1 2 4 3 5 6 1 2 3 4 5 6 1 5 2 4 3 6 1 2 4 3 5 6 1 2 3 4 5 6 8 KHOA CÔNG NGHỆ THÔNG TIN Input: Dãy các đối tượng (Các số chưa sắp xếp): A[0], A[1],…,A[n-1]. Output: Dãy các đối tượng đã được sắp xếp (Các số tăng dần): A[0], A[1],…,A[n-1] Actions: void BubbleSort(int a[],int n) { int i, j; for (i = 0 ; i< n-1 ; i++) for (j =i ; j > n-1 ; j ++) if(a[j]< a[j1]) // nếu sai vị trí thì đổi chỗ Swap(a[j], a[j+1]); } End 9 KHOA CÔNG NGHỆ THÔNG TIN #Giải thuật Nổi bọt - Bubble Sort: B.1: Gán i = 0 B.2: Gán j = 0 //danh sách có n phần tử a0,a1,a2…,an-1 B.3: Nếu A[j] > A[j + 1] thì Hoán đối chỗ giữa A[j] và A[j + 1] B.4: Nếu (j < n – i – 1): -Đúng thì j = j + 1 và quay lui bước 3 -Sai thì chuyển sang bước 5 B.5: Nếu (i < n – 1): -Đúng thì i = i + 1 và quay lui bước 2 -Sai thì dừng Kết Thúc. 10 KHOA CÔNG NGHỆ THÔNG TIN Bài tập 1: Áp dụng giải thuật sắp xếp Nổi bọt – Bubble Sort. Cho Mảng A = [19,13,6] +B.1: i = 0; B.2: j = 0; B.3: nếu A[j] > A[j+1] (A[0] > A[1]; 19 > 13) thì Hoán đổi giữa 19 và 13 [13,19,6]; B.4: nếu j < (n-i-1) (0 < (2-0-1)) : Đúng thì j = j+1= 0+1= 1 và quay lui B.3; +B.3: nếu A[j] > A[j+1] (A[1] > A[2]; 19 > 6) thì Hoán đổi giữa 19 và 6 [13, 6,19]; B.4: nếu j < (n-i-1) (1 < (2-0-1)): Sai thì chuyển sang B.5 ---------- #Giải thuật Nổi bọt - Bubble Sort: B.5: nếu i < (n-1) (0 < 1): Đúng thì i =i+1 = 0 +1 = 1 và quay lại B.2 B.1: Gán i = 0 +B.2: j = 0 (i= 1) ; B.2: Gán j = 0 B.3: nếu A[0] > A[1] (13 > 6) thì Hoán đổi giữa 13 và 6 B.3: Nếu A[j] > A[j + 1] thì Hoán đối chỗ giữa A[j] và A[j + 1] B.4: Nếu (j < n – i – 1): [6, 13,19] ; -Đúng thì j = j + 1 và quay lui bước 3 B.4: Nếu (j < n – i – 1) (0 < 0) : Sai thì chuyển sang B.5 -Sai thì chuyển sang bước 5 B.5: Nếu (i < n – 1) (1 < 1): Sai thì Dừng Kết thúc. B.5: Nếu (i < n – 1): Vậy mảng được sắp xếp là: -Đúng thì i = i + 1 và quay lui bước 2 [6, 13,19]. -Sai thì dừng Kết Thúc. ---------- 11 KHOA CÔNG NGHỆ THÔNG TIN Bài tập 2: Áp dụng giải thuật sắp xếp Nổi bọt – Bubble Sort. Thực hiện sắp xếp mảng: A = [39, 25, 16, 20] 12 KHOA CÔNG NGHỆ THÔNG TIN * Đánh giá độ phức tạp - thuật toán Bubble Sort void BubbleSort() { int i, j ; for (i = 2; i = i; j--) if (a[j-1] > a[j]) //hoán chuyển swap(&a[j-1], &a[j]); } 13 KHOA CÔNG NGHỆ THÔNG TIN 14 KHOA CÔNG NGHỆ THÔNG TIN -Sắp xếp chèn là một giải thuật sắp xếp dựa trên so sánh tại chỗ. -Một danh sách con luôn luôn được duy trì dưới dạng đã qua sắp xếp. Sắp xếp chèn là chèn thêm một phần tử vào danh sách con đã qua sắp xếp. -Phần tử được chèn vào vị trí thích hợp sao cho vẫn đảm bảo rằng danh sách con đó vẫn sắp xếp theo thứ tự. -Giải thuật này không thích hợp sử dụng với các tập dữ liệu lớn khi độ phức tạp trường hợp xấu nhất và trường hợp trung bình là Ο(n2) với n là số phần tử. 15 KHOA CÔNG NGHỆ THÔNG TIN Ví dụ: cho một mảng gồm các phần tử không có thứ tự: 14 – 33 – 27 – 10 – 35 – 19 – 42 - 44 -Giải thuật sắp xếp chèn so sánh hai phần tử đầu tiên: 14 – 33 – 27 – 10 – 35 – 19 – 42 - 44 -Giải thuật tìm ra rằng cả 14 và 33 đều đã trong thứ tự tăng dần. Bây giờ, 14 là trong danh sá ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu và giải thuật Cấu trúc dữ liệu Cấu trúc dữ liệu và giải thuật Giải thuật sắp xếp nổi bọt Giải thuật sắp xếp chèn Giải thuật sắp xếp chọnGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 306 0 0 -
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 trang 160 0 0 -
3 trang 159 3 0
-
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Trần Hạnh Nhi
123 trang 156 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 149 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 147 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 139 0 0 -
10 trang 138 0 0
-
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 137 0 0 -
57 trang 122 1 0