Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 4: Sắp xếp
lượt xem 26
download
Nội dung chính của chương 4 Sắp xếp nằm trong bài giảng cấu trúc dữ liệu và thuật toán nhằm trình bày về các nội dung chính như sau: tổng quan về phương pháp sắp xếp, định nghĩa bài toán sắp xếp, các phương pháp sắp xếp thông dụng như phương pháp nổi bọt, phương pháp đổi chỗ trực tiếp, phương pháp chọn trực tiếp...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 4: Sắp xếp
- CHƯƠNG 4: SẮP XẾP (SORTING)
- Nội dung 2 Tổng quan Các phương pháp sắp xếp thông dụng Chương 4: Sắp xếp
- Tổng quan 3 Tại sao phải sắp xếp? Để có thể sử dụng thuật toán tìm nhị phân Để thực hiện thao tác nào đó được nhanh hơn Định nghĩa bài toán sắp xếp Sắp xếp là quá trình xử lý một danh sách các phần tử (hoặc các mẫu tin) để đặt chúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó dựa trên nội dung thông tin lưu giữ tại mỗi phần tử Chương 4: Sắp xếp
- Các phương pháp sắp xếp thông dụng 4 Phương pháp Đổi chỗ trực tiếp (Interchange sort) Phương pháp Nổi bọt (Bubble sort) Phương pháp Chèn trực tiếp (Insertion sort) Phương pháp Chọn trực tiếp (Selection sort) Phương pháp dựa trên phân hoạch (Quick sort) Chương 4: Sắp xếp
- Interchange Sort 5 Khái niệm nghịch thế: Xét một mảng các số a[0], a[1], … a[n-1] Nếu có i a[j], thì ta gọi đó là một nghịch thế Mảng chưa sắp xếp sẽ có nghịch thế Mảng đã có thứ tự sẽ không chứa nghịch thế a[0] a[1] … a[n -1] Chương 4: Sắp xếp
- Interchange Sort – Ý tưởng 6 Nhận xét: Để sắp xếp một dãy số, ta có thể xét các nghịch thế có trong dãy và làm triệt tiêu dần chúng đi Ý tưởng: Xuất phát từ đầu dãy, tìm tất cả nghịch thế chứa phần tử này, triệt tiêu chúng bằng cách đổi chỗ phần tử này với phần tử tương ứng trong cặp nghịch thế Lặp lại xử lý trên với các phần tử tiếp theo trong dãy Chương 4: Sắp xếp
- Interchange Sort – Thuật toán 7 // input: dãy (a, n) // output: dãy (a, n) đã được sắp xếp Bước 1: i = 0; // bắt đầu từ đầu dãy Bước 2: j = i+1; Bước 3: Trong khi j < n thực hiện: Nếu a[i]>a[j] thì đổi chỗ a[i], a[j] j = j+1; Bước 4: i = i+1; Nếu (i < n-1): Lặp lại Bước 2 Ngược lại: Dừng Chương 4: Sắp xếp
- Interchange Sort – Ví dụ 8 j 1 2 3 4 5 6 7 8 12 1 2 8 5 1 6 4 15 i Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắp xếp
- Interchange Sort – Ví dụ 9 j 1 2 3 4 5 6 7 8 1 12 2 8 5 2 6 4 15 i Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắp xếp
- Interchange Sort – Ví dụ 10 j 1 2 3 4 5 6 7 8 1 2 12 4 8 5 6 4 15 i Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắp xếp
- Interchange Sort – Ví dụ 11 j 1 2 3 4 5 6 7 8 1 2 4 12 5 8 6 5 15 i Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắp xếp
- Interchange Sort – Ví dụ 12 1 2 3 4 5 6 7 8 1 2 4 5 6 8 12 15 Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắp xếp
- Interchange Sort - Cài đặt 13 void InterchangeSort(int a[], int n) { for (int i=0 ; ia[j]) //nếu có nghịch thế thì đổi chỗ Swap(a[i], a[j]); } void Swap(int &a, int &b) { int temp = a; a = b; b = temp; }
- Interchange Sort - Đánh giá giải thuật 14 Số lượng các phép so sánh xảy ra không phụ thuộc vào tình trạng của dãy số ban đầu Số lượng phép hoán vị thực hiện tùy thuộc vào kết quả so sánh Chương 4: Sắp xếp
- Các phương pháp sắp xếp thông dụng 15 Phương pháp Đổi chỗ trực tiếp (Interchange sort) Phương pháp Nổi bọt (Bubble sort) Phương pháp Chèn trực tiếp (Insertion sort) Phương pháp Chọn trực tiếp (Selection sort) Phương pháp dựa trên phân hoạch (Quick sort) Chương 4: Sắp xếp
- Bubble Sort – Ý tưởng 16 Xuất phát từ cuối (đầu) dãy, đổi chỗ các cặp phần tử kế cận để đưa phần tử nhỏ (lớn) hơn trong cặp phần tử đó về vị trí đúng đầu (cuối) dãy hiện hành, sau đó sẽ không xét đến nó ở bước tiếp theo Ở lần xử lý thứ i có vị trí đầu dãy là i Lặp lại xử lý trên cho đến khi không còn cặp phần tử nào để xét
- Bubble Sort – Thuật toán 17 // input: dãy (a, n) // output: dãy (a, n) đã được sắp xếp Bước 1: i = 0; Bước 2: j = n-1; //Duyệt từ cuối dãy ngược về vị trí i Trong khi (j > i) thực hiện: Nếu a[j]
- Bubble Sort – Ví dụ 18 j 1 2 3 4 5 6 7 8 12 1 2 8 5 1 6 4 15 i Nếu a[j]
- Bubble Sort – Ví dụ 19 j 1 2 3 4 5 6 7 8 1 12 2 2 8 5 4 6 15 i Nếu a[j]
- Bubble Sort – Ví dụ 20 j 1 2 3 4 5 6 7 8 1 2 12 4 4 8 5 6 15 i Nếu a[j]
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu & thuật toán: Chương 3 - Nguyễn Đức Nghĩa
0 p | 491 | 166
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 179 | 17
-
Bài giảng Cấu trúc dữ liệu: Chương 10 - Nguyễn Xuân Vinh
31 p | 95 | 10
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 117 | 9
-
Bài giảng Cấu trúc dữ liệu: Chương Giới thiệu - Nguyễn Xuân Vinh
8 p | 112 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 62 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 59 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 173 | 6
-
Bài giảng Cấu trúc dữ liệu: Chương 5 - Cấu trúc dữ liệu cây
32 p | 86 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Châu Thị Bảo Hà
133 p | 115 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 107 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các khái niệm cơ bản
23 p | 48 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 70 | 3
-
Bài giảng Cấu trúc dữ liệu 1 - Nguyễn Thái Dư
85 p | 81 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 53 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn