Thông tin tài liệu
Bài 5: CÁC THUẬT TOÁN SẮP XẾP VÀ TÌM KIẾM CƠ BẢN Tìm hiểu về cách sử dụng mảng thông thường trong VB.Net Tìm hiểu về lớp ArrayList và cách sử dụng trong VB.Net So sánh mảng thông thường và ArrayList Áp dụng việc đo thời gian thực hiện lệnh Nhắc lại bài cũ Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 2 Tìm hiểu các giải thuật sắp xếp cơ bản trên cấu trúc dữ liệu mảng Tìm hiểu các giải thuật tìm kiếm cơ bản trên cấu trúc dữ liệu mảng Đánh giá và so sánh hiệu quả các giải thuật Mục tiêu bài học hôm nay Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 3 Sắp xếp là quá trình xử lý một danh sách các phần tử để đặt chúng theo một thứ tự nào đó (tăng dần, giảm dần) dựa trên nội dung thông tin lưu giữ tại mỗi phần tử. Định nghĩa bài toán sắp xếp Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 4 3 1 6 8 5 1 3 5 6 8 Sắp xếp tăng dần Bài toán: Cho trước một dãy số a 1 , a 2 ,… , a N được lưu trữ trong cấu trúc dữ liệu mảng Sắp xếp dãy số a 1 , a 2 ,… , a N là thực hiện việc bố trí lại các phần tử sao cho hình thành được dãy mới a k1 , a k2 ,… ,a kN có thứ tự (ví dụ thứ tự tăng) nghĩa là a ki > a ki-1. Bài toán sắp xếp dãy số Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 5 Để quyết định được những tình huống cần thay đổi vị trí các phần tử trong dãy, cần dựa vào kết quả của một loạt phép so sánh -> Hai thao tác so sánh và gán là các thao tác cơ bản của hầu hết các thuật toán sắp xếp. Chú ý: Khi xây dựng một thuật toán sắp xếp cần tìm cách giảm thiểu những phép so sánh và đổi chỗ không cần thiết để tăng hiệu quả của thuật toán Bài toán sắp xếp dãy số Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 6 Sắp xếp lựa chọn (Selection Sort) Sắp xếp nổi bọt (Bubble Sort) Sắp xếp chèn (Insertion Sort) 3 giải thuật sắp xếp cơ bản Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 7 Sắp xếp lựa chọn Ý tưởng: Chọn phần tử nhỏ nhất trong N phần tử ban đầu, đưa phần tử này về vị trí đầu dãy hiện hành; sau đó loại nó khỏi danh sách sắp xếp tiếp theo. Xem dãy hiện hành chỉ còn N-1 phần tử của dãy ban đầu, bắt đầu từ vị trí thứ 2; lặp lại quá trình trên cho dãy hiện hành… đến khi dãy hiện hành chỉ còn 1 phần tử. Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 8 Sắp xếp lựa chọn Các bước sắp xếp tăng dần: Bước 1: i = 1 // lần xử lý đầu tiên Bước 2: Tìm phần tử nhỏ nhất a[min] trong dãy hiện hành từ a[i] đến a[N] Bước 3: Hoán vị a[min] và a[i] Bước 4: Nếu i < N-1 thì i = i+1; Lặp lại Bước 2 Ngược lại: Dừng Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 9 LƯU ĐỒ GIẢI THUẬT SẮP XẾP LỰA CHỌN Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 10 [...]... a[j] và a[j-1] j= j-1 Bước 3: i=i+1 // lần xử lý tiếp theo Nếu i>N-1 thì dừng Ngược lại, lặp lại Bước 2 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 15 LƯU ĐỒ GIẢI THUẬT SẮP XẾP NỔI BỌT Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 16 Sắp xếp nổi bọt Ví dụ: Cho dãy số a: {12, 2, 8, 5, 1, 6, 4, 15 } Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 17 Slide 5 - Các thuật toán sắp xếp và tìm. .. 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 26 Sắp xếp chèn Đánh giá giải thuật: Độ phức tạp giải thuật phụ thuộc vào số lần so sánh Ở lượt thứ i, tối đa cần i lần so sánh để tìm được vị trí chèn thích hợp Do vậy số lần so sánh tối đa là: Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 27 Đánh giá các giải thuật sắp xếp Cả 3 GT đều có độ phức tạp là 0(n2) Slide 5 - Các thuật toán sắp xếp và tìm. .. được sắp thứ tự Sau N-1 bước thì kết thúc Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 22 LƯU ĐỒ GIẢI THUẬT SẮP XẾP CHÈN Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 23 Sắp xếp chèn Ví dụ: cho danh sách gồm 7 phần tử, trong đó 3 phần tử đầu đã đc sắp xếp Để tiếp tục sắp xếp phần tử thứ tư a4 = 6 vào danh sách con đó, ta tìm vị trí thích hợp của nó là sau 3 và trước 7 Làm tiếp theo với a5... tìm kiếm cơ bản 28 Bài toán tìm kiếm Tập dãy số a1 , a2 ,…, aN được lưu trữ ở dạng mảng Cần tìm phần tử có giá trị x xem có trong mảng không a1 a2 a3 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản … aN - 1 aN 29 Các giải thuật tìm kiếm Có 2 giải thuật tìm kiếm thường áp dụng: Tìm kiếm tuyến tính: thường thực hiện với các mảng chưa được sắp xếp thứ tự Tìm kiếm nhị phân: thường thực hiện với các. .. Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 32 Lưu đồ giải thuật tìm kiếm tuyến tính Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 33 Cài đặt giải thuật Function SeqSearch(ByVal arr() As Integer, ByVal sValue As Integer) As Integer Dim index As Integer For index = 0 To arr.GetUpperBound(0) If (arr(index) = sValue) Then Return True End If Next Return False End Function Slide 5 - Các thuật toán. .. tìm kiếm cơ bản 35 Tìm kiếm nhị phân Ý tưởng: Tìm kiếm kiểu “tra từ điển” Giải thuật tìm cách giới hạn phạm vi tìm kiếm sau mỗi lần so sánh x với một phần tử trong dãy đã được sắp xếp Tại mỗi bước, so sánh x với phần tử nằm ở vị trí giữa của dãy tìm kiếm hiện hành: Nếu x nhỏ hơn thì sẽ tìm kiếm ở nửa trước của dãy Ngược lại, tìm ở nửa sau của dãy Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 36.. .Sắp xếp lựa chọn Ví dụ: Cho dãy số a: {12, 2, 8, 5, 1, 6, 4, 15 } Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 11 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 12 Sắp xếp lựa chọn Cài đặt giải thuật bằng ngôn ngữ VB.Net Public Sub SelectionSort() Dim outer, inner, min, temp As Integer For... sách con đó, ta tìm vị trí thích hợp của nó là sau 3 và trước 7 Làm tiếp theo với a5 = 4 ta được Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 24 Sắp xếp chèn Làm tiếp theo với a6 = 2 ta được Cuối cùng chèn a7 = 5 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 25 Sắp xếp chèn Cài đặt giải thuật bằng ngôn ngữ VB.Net Public Sub InsertionSort() Dim inner, outer, temp As Integer For outer = 1... đã sắp xếp thứ tự Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 30 Tìm kiếm tuyến tính Ý tưởng: Tiến hành so sánh x lần lượt với các phần tử thứ nhất, thứ hai… của mảng a cho đến khi gặp được phần tử có giá trị x cần tìm, hoặc đã tìm đến hết mảng mà không thấy x Ví dụ: Tìm phần tử có giá trị x = 10 10 7 5 12 41 10 32 13 9 15 3 1 2 3 4 5 6 7 8 9 10 Đã tìm thấy tại vị trí số 5 Slide 5 - Các thuật. .. toán sắp xếp và tìm kiếm cơ bản 20 Sắp xếp nổi bọt Đánh giá giải thuật: Ở lượt thứ i, bao giờ cũng cần (n-i+1) lần so sánh để xác định phần tử nhỏ nhất hiện hành Do vậy số lần so sánh: Số lượng phép hoán vị thực hiện tùy thuộc vào kết quả so sánh, có thể ước lược trong từng trường hợp như sau Trường hợp Số lân so sánh Tốt nhất Số lần hoán vị 0 Xấu nhất Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ . bọt Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 18 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 19 Cài đặt giải thuật bằng ngôn ngữ VB.Net Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ. sắp xếp và tìm kiếm cơ bản 10 Sắp xếp lựa chọn Ví dụ: Cho dãy số a: {12, 2, 8, 5, 1, 6, 4, 15 } Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 11 Slide 5 - Các thuật toán sắp xếp và tìm kiếm. GIẢI THUẬT SẮP XẾP NỔI BỌT Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 16 Ví dụ: Cho dãy số a: {12, 2, 8, 5, 1, 6, 4, 15 } Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 17 Sắp xếp nổi
Ngày đăng: 23/05/2014, 16:49
Xem thêm: bài 5 các thuật toán sắp xếp và tìm kiếm cơ bản, bài 5 các thuật toán sắp xếp và tìm kiếm cơ bản