Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 4 - Bùi Tiến Lên
Số trang: 50
Loại file: pdf
Dung lượng: 713.71 KB
Lượt xem: 16
Lượt tải: 0
Xem trước 5 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 - Chương 4: Các thuật toán sắp xếp" cung cấp cho người đọc các kiến thức: Bài toán sắp xếp, các phương pháp sắp xếp, selection sort, insertion sort,.... Mời các bạn cùng tham khảo nội dung chi tiết.
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: Chương 4 - Bùi Tiến Lên CÁC THUẬT TOÁN SẮP XẾP Bùi Tiến Lên 01/01/2017CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài toán sắp xếp I Sắp xếp một danh sách các đối tượng theo một thứ tự nào đó là một trong những công việc phổ biến I Sắp xếp là một yêu cầu không thể thiếu trong việc viết phần mềm ứng dụng I Do đó, nghiên cứu các phương pháp sắp xếp là cần thiết cho những ai học lập trình Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 2 Bài toán sắp xếp (cont.) Định nghĩa 1 Cho một dãy a có n phần tử có thứ tự. Hãy sắp xếp dãy {a0 , a1 , ..., an−1 } theo thứ tự tăng dần. Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 3 Các phương pháp sắp xếp Có rất nhiều phương pháp sắp xếp khác nhau. Mỗi phương pháp có những đặc điểm riêng I Phương pháp Selection Sort I Phương pháp Insertion Sort I Phương pháp Bubble Sort I Phương pháp Shell Sort I Phương pháp Heap Sort I Phương pháp Merge Sort I Phương pháp Quick Sort I Phương pháp Radix Sort I Phương pháp Counting Sort Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 4 SELECION SORTCuuDuongThanCong.com https://fb.com/tailieudientucntt Selection Sort Ý tưởng của thuật toán như sau: Giả sử dãy a được chia làm hai phần: phần trên trái đã sắp xếp s và phần bên phải chưa sắp xếp u 1. s = ∅ và u = a 2. Tìm phần tử nhỏ nhất xm của u 3. Loại xm ra khỏi u thêm vào cuối của s 4. Nếu u vẫn còn phần tử thì quay lại bước 2 Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 6 Selection Sort (cont.) 1 void SelectionSort (int a[], int n) 2 { 3 int min; 4 for (int i = 0; i < n; i++) 5 { 6 min = i; 7 for (int j = i + 1; j < n; j++) 8 if (a[j] < a[min ]) 9 min = j; 10 if (a[min] < a[i]) 11 Swap(a[min], a[i]); 12 } 13 } Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 7 Đánh giá Phân tích chi phí thực hiện theo n (số lượng phần tử của mảng) Trường hợp O(g(n)) tốt nhất ? trung bình ? xấu nhất ? Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 8 INSERTION SORTCuuDuongThanCong.com https://fb.com/tailieudientucntt Insertion Sort Ý tưởng của thuật toán như sau: Giả sử dãy a được chia làm hai phần: phần trên trái đã sắp xếp s và phần bên phải chưa sắp xếp u 1. s = ∅ và u = a 2. Lấy phần tử đầu tiên x của u 3. Loại x ra khỏi u 4. Chèn x vào s sao cho đúng vị trí 5. Nếu u vẫn còn phần tử thì quay lại bước 2 Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10 Insertion Sort (cont.) 1 void InsertionSort (int a[], int n) 2 { 3 int saved; 4 for (int i = 1; i < n; i++) 5 { 6 saved = a[i]; 7 for (int j = i; j > 0 && saved < a[j - 1]; j--) 8 a[j] = a[j - 1]; 9 a[j] = saved; 10 } 11 } Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 11 Đánh giá Phân tích chi phí thực hiện theo n (số lượng phần tử của mảng) Trường hợp O(g(n)) t ...
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: Chương 4 - Bùi Tiến Lên CÁC THUẬT TOÁN SẮP XẾP Bùi Tiến Lên 01/01/2017CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài toán sắp xếp I Sắp xếp một danh sách các đối tượng theo một thứ tự nào đó là một trong những công việc phổ biến I Sắp xếp là một yêu cầu không thể thiếu trong việc viết phần mềm ứng dụng I Do đó, nghiên cứu các phương pháp sắp xếp là cần thiết cho những ai học lập trình Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 2 Bài toán sắp xếp (cont.) Định nghĩa 1 Cho một dãy a có n phần tử có thứ tự. Hãy sắp xếp dãy {a0 , a1 , ..., an−1 } theo thứ tự tăng dần. Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 3 Các phương pháp sắp xếp Có rất nhiều phương pháp sắp xếp khác nhau. Mỗi phương pháp có những đặc điểm riêng I Phương pháp Selection Sort I Phương pháp Insertion Sort I Phương pháp Bubble Sort I Phương pháp Shell Sort I Phương pháp Heap Sort I Phương pháp Merge Sort I Phương pháp Quick Sort I Phương pháp Radix Sort I Phương pháp Counting Sort Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 4 SELECION SORTCuuDuongThanCong.com https://fb.com/tailieudientucntt Selection Sort Ý tưởng của thuật toán như sau: Giả sử dãy a được chia làm hai phần: phần trên trái đã sắp xếp s và phần bên phải chưa sắp xếp u 1. s = ∅ và u = a 2. Tìm phần tử nhỏ nhất xm của u 3. Loại xm ra khỏi u thêm vào cuối của s 4. Nếu u vẫn còn phần tử thì quay lại bước 2 Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 6 Selection Sort (cont.) 1 void SelectionSort (int a[], int n) 2 { 3 int min; 4 for (int i = 0; i < n; i++) 5 { 6 min = i; 7 for (int j = i + 1; j < n; j++) 8 if (a[j] < a[min ]) 9 min = j; 10 if (a[min] < a[i]) 11 Swap(a[min], a[i]); 12 } 13 } Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 7 Đánh giá Phân tích chi phí thực hiện theo n (số lượng phần tử của mảng) Trường hợp O(g(n)) tốt nhất ? trung bình ? xấu nhất ? Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 8 INSERTION SORTCuuDuongThanCong.com https://fb.com/tailieudientucntt Insertion Sort Ý tưởng của thuật toán như sau: Giả sử dãy a được chia làm hai phần: phần trên trái đã sắp xếp s và phần bên phải chưa sắp xếp u 1. s = ∅ và u = a 2. Lấy phần tử đầu tiên x của u 3. Loại x ra khỏi u 4. Chèn x vào s sao cho đúng vị trí 5. Nếu u vẫn còn phần tử thì quay lại bước 2 Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10 Insertion Sort (cont.) 1 void InsertionSort (int a[], int n) 2 { 3 int saved; 4 for (int i = 1; i < n; i++) 5 { 6 saved = a[i]; 7 for (int j = i; j > 0 && saved < a[j - 1]; j--) 8 a[j] = a[j - 1]; 9 a[j] = saved; 10 } 11 } Spring 2017CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 11 Đánh giá Phân tích chi phí thực hiện theo n (số lượng phần tử của mảng) Trường hợp O(g(n)) t ...
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu và giải thuật Selection sort Insertion sort Bài toán sắp xếp Thuật toán sắp xếpTài liệu có 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 361 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 187 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 175 0 0 -
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 trang 172 0 0 -
57 trang 171 1 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 166 0 0 -
3 trang 165 3 0
-
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 149 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 146 0 0 -
10 trang 145 0 0