1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng cấu trúc dữ liệu và giải thuật (data structures and algorithms) chương 6 gv ngô công thắng

22 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 1,19 MB

Nội dung

28/04/22 Chương 6: Giải thuật xếp Sắp xếp chọn (Selection Sort) Sắp xếp chèn (Insert Sort) Sắp xếp bọt (Bubble Sort) Sắp xếp nhanh (Quick Sort) Sắp xếp vun đống (Heap Sort) Sắp xếp trộn (Merge Sort) Ngô Công Thắng Bài giàng CTDL> - Chương 06 6.1 Khi tìm hiểu giải thuật cần tìm hiểu 1) Ý tưởng ví dụ họa ý tưởng 2) Giả mã 3) O Ngơ Công Thắng Bài giàng CTDL> - Chương 06 6.2 28/04/22 Bài tốn xếp • Cho dãy khóa số nguyên có n phần tử lưu trữ mảng chiều Sắp xếp dãy khóa tăng dần từ trái sang phải a x x x a[1] Ngô Công Thắng x x x n a[n] Bài giàng CTDL> - Chương 06 6.3 Sắp xếp chọn (Selection Sort) 1.1 Phương pháp • Giả sử cần xếp tăng dần dãy khoá a1, a2, , an • Ý tưởng thuật tốn sau: – Chọn phần tử có khố nhỏ – Đổi chỗ với phần tử a1 – Sau lặp lại thao tác với n-1 phần tử lại, lại lặp lại với n-2 phần tử lại, , phần tử Ngô Công Thắng Bài giàng CTDL> - Chương 06 6.4 28/04/22 1.1 Phương pháp (tiếp) • Ví dụ: Cho dãy khố ban đầu là: 6, 10, 1, 8, với n=5 i=1 1, 10, 6, 8, i=2 1, 6, 10, 8, i=3 1, 6, 8, 10, i=4 1, 6, 8, 9, 10 Ngô Công Thắng Bài giàng CTDL> - Chương 06 6.5 1.1 Phương pháp (tiếp) Procedure selectionSort(a,n); For i:= to n-1 Do Begin 1) { Tìm vị trí k phần tử nhỏ } +) k:=i; +) For j:=i+1 To n Do If a[j] < a[k] then k:=j 2) {Đổi chỗ phần tử nhỏ vị trí k cho vị trí i} If k ≠ i then a[k]a[i]; End Return Ngô Công Thắng Bài giàng CTDL> - Chương 06 6.6 28/04/22 Xác định O i Số lần so sánh < n–1 n–2 n-1 Tổng = + + … n-1 < + + … n = (n*(n+1))/2 = ½*(n2 + n) Coi O(½*(n2 + n)) Áp dụng quy tắc bỏ số: O(n2 + n) Áp dụng quy tắc cộng: O(n2) Ngô Công Thắng Bài giàng CTDL> - Chương 06 6.7 Sắp xếp chèn (Insert Sort) 2.1 Phương pháp • Phương pháp người chơi hay dùng • Giả sử cần xếp tăng dần dãy khoá a1, a2, , an Ý tưởng thuật toán sau: – Các phần tử chia thành dãy đích: a1, , ai-1 (kết quả) dãy nguồn ai, , an – Bắt đầu với i=2, bước phần tử thứ i dãy nguồn lấy chèn vào vị trí thích hợp dãy đích cho dãy đích tăng dần Sau i tăng lên lặp lại Ngô Công Thắng Bài giàng CTDL> - Chương 06 6.8 28/04/22 2.1 Phương pháp • Ví dụ: Cho dãy khố 6, 10, 1, 7, với n=5 (dãy số có phần tử) Dãy đích Dãy nguồn 10, 1, 7, i=2 6, 10 1, 7, i=3 1, 6, 10 7, i=4 1, 6, 7, 10 i=5 1, 4, 6, 7, 10 Ngô Công Thắng Bài giàng CTDL> - Chương 06 6.9 Thủ tục chèn Procedure insertSort(a,n) 1) a[0]:=- 2) For i:=2 to n Do Begin tg:=a[i]; j:=i-1; While tg

Ngày đăng: 16/06/2023, 16:19

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN