Bài giảng Cấu trúc dữ liệu và giải thuật: Tìm kiếm và sắp xếp - Đậu Ngọc Hà Dương

56 15 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Tìm kiếm và sắp xếp - Đậu Ngọc Hà Dương

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật: Tìm kiếm và sắp xếp - Đậu Ngọc Hà Dương có nội dung trình bày về tìm kiếm tuần tự và tìm kiếm nhị phân; sắp xếp bubble sort, selection sort, insert sort, quick sort,... Mời các bạn cùng tham khảo!

1 TÌM KIẾM & SẮP XẾP Bài giảng Cấu trúc liệu Giải thuật Nội d dung ‰ Tì kiếm Tìm kiế ƒ ƒ ‰ Tuần tự Nhị phân Sắp xếp ƒ ƒ ƒ ƒ Bubble sort Selection sort Insert sort Quick sort Tìm kiếm … … Tìm kiếm: duyệt danh sách lấy phần tử thoả tiêu chuẩn cho trước Là thao tác phổ biến máy tính: † Tìm mẫu tin sở liệu † Tìm kiếm thơng tin Internet… … Khảo sát việc tìm kiếm mảng/danh sách Tìm kiếm Giải thuật … Input: put: † Mảng A gồm n phần tử † Giá trị x cần tìm … Trả về: † Vị … trí phần tử x A –1 x không xuất Thao tác bản: † So sánh Tìm kiếm Giải thuật … Giải thuật: † … Lần lượt so sánh x với phần tử mảng A gặp phần tử cần tìm, hết mảng Ví dụ: A = {1, 25, 6, 5, 2, 37, 40}, x = x = 25 37 40 37 40 37 40 x = 25 x = 25 Dừng Tìm kiếm Đánh giá … Đánh giá (thao tác so sánh): † Tốt nhất: O(1) † Xấu nhất: O(n) † Trung bình: „ Giả Hiếm xảy Tại sao? sử liệu phân bố đều, xác suất bắt gặp x vị trí „ Mỗi vòng lặp thực thao tác so sánh Tại sao? „ Số thao tác = 2*(1 + + … + n) = n + „ Độ phức tạp: O(n) Tìm kiếm Phần tử lính canh … Mỗi vòng lặp cần thao tác so sánh: † Kiểm tra hết mảng † Kiểm tra phần tử có x … … Phần tử lính canh: đặt giá trị x vào cuối mảng ⇒ khơng cần kiểm tra điều kiện hết mảng Ví dụ: A = {1, 25, 5, 2, 37}, x = … 25 37 Trả về: ề: n nế khơng tìm thấ thấy Tìm kiếm nhịị phân p … … Khi mảng gồm phần tử sắp, tận dụng điều kiện để giảm số thao tác Ý tưởng: † Xét phần tử A[m] † Nếu A[m] = x, trả m † Nếu A[m] > x, x tìm phần tử bên trái m † Nếu A[m] < x, tìm phần tử bên trái m Tìm kiếm nhị phân Ví dụ minh hoạ … A = {2, {2 3, 6, 7, 10 10, 16, 16 18}, 18} x = 16 [0] 10 16 18 [1] [2] [3] [4] [5] [6] [4] [5] [6] 10 16 18 Tìm kiếm nhị phân Chương trình 10 int BinarySearch(int a[], int n, int x) { int l = 0, r = n-1; while ( (l x) Số lần lặp pos { a[pos+1]=a[pos]; pos ; } a[pos+1] = x; } } 44 Insertion Sort Đánh giá … So sánh: † Tốt nhất: n −1 ∑ = ( n − 1) i =1 n −1 † Xấu … nhất: ∑ i = n ( n − 1) i =1 Gán: † Tốt n −1 nhất: ∑ = 3((n − 1)) i=1 n −1 † Xấu nhất: ∑ i =1 n ( n − 1) (3 + i ) = 3( n − 1) + Quick sort 45 … Các giải thuật Bubble sort sort, Selection sort, sort Insertion sort: † Dễ hiểu,, dễ cài đặt ặ † Hiệu thấp: O(n2) … … Các giải thuật xếp dựa so sánh: độ phức tạp ≥ n × log2n Quick Qu c so sort (C A R Hoare, o e, 1962) 96 ) có thểể đạt đạ độ phức tạp 46 Quick Sort Ý tưởng … Dựa việc phân hoạch dãy ban đầu thành phần: † Dãy y 1: a0, a1, …,, có ggiá trịị nhỏ x † Dãy 2: aj, …, an-1 có giá trị lớn x Dãyy ban đầu ợ pphân thành pphần: akx k = …i k = i+1 … j k = jj+1, … n-1 Phần có thứ tự ‰ Phần 1, 3: cần thứ tự, tiến hành phân hoạch dãy theo h cách h phân hâ hoạch h h dãy dã ban b đầu đầ (chia ( hi để trị) ị) ‰ 47 Quick Sort Giải thuật … Giải G ả tthuật uật p phân â hoạch oạc tthành dãy co con:: Chọn phần tử a[k] dãy làm giá trị mốc, ≤ k ≤ r-1 x=a[k], i = 0, j = r-1 Thường chọn phần tử dãy: k = (l+r)/2 Phát hiệu chỉnh cặp phần tử a[i], a[j] sai vị trí Trong 2.1 T (a[i] ( [i] < x), ) tăng tă i i 2.2 Trong (a[j] >x), giảm j 2.3 Nếu ii

Ngày đăng: 11/09/2021, 13:43

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan