Tìm kiếm và sắp xếp docx

198 5K 1
Tìm kiếm và sắp xếp docx

Đ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

Tìm kieám &Saép xeáp Tìm kieám &Saép xeáp Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 2 Tìm kiếm & Sắp xếp Tìm kiếm & Sắp xếp Mục tiêu: Mục tiêu:  Giới thiệu một số thuật toán tìm kiếm Giới thiệu một số thuật toán tìm kiếmsắp xếp nội. và sắp xếp nội.  Phân tích, đánh giá độ phức tạp của Phân tích, đánh giá độ phức tạp của các giải thuật tìm kiếm, sắp xếp. các giải thuật tìm kiếm, sắp xếp. Nội dung: Nội dung:  Nhu cầu tìm kiếm sắp xếp dữ liệu Nhu cầu tìm kiếm sắp xếp dữ liệu trong một hệ thống thông tin. trong một hệ thống thông tin.  Các giải thuật tìm kiếm nội. Các giải thuật tìm kiếm nội.  Các giải thuật sắp xếp nội. Các giải thuật sắp xếp nội. Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 3 Nhu cầu tìm kiếm sắp xếp Nhu cầu tìm kiếm sắp xếp dữ liệu trong 1 hệ thống thông tin dữ liệu trong 1 hệ thống thông tin  Trong hầu hết các hệ lưu trữ, quản lý Trong hầu hết các hệ lưu trữ, quản lý dữ liệu, thao tác tìm kiếm thường được dữ liệu, thao tác tìm kiếm thường được thực hiện nhất để khai thác thông tin. thực hiện nhất để khai thác thông tin.  Do các hệ thống thông tin thường phải Do các hệ thống thông tin thường phải lưu trữ một khối lượng dữ liệu đáng lưu trữ một khối lượng dữ liệu đáng kể, nên việc xây dựng các giải thuật kể, nên việc xây dựng các giải thuật cho phép tìm kiếm nhanh sẽ có ý nghóa cho phép tìm kiếm nhanh sẽ có ý nghóa rất lớn. rất lớn.  Nếu dữ liệu trong hệ thống đã được tổ Nếu dữ liệu trong hệ thống đã được tổ chức theo một trật tự nào đó, thì việc chức theo một trật tự nào đó, thì việc tìm kiếm sẽ tiến hành nhanh chóng tìm kiếm sẽ tiến hành nhanh chóng hiệu quả hơn hiệu quả hơn Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 4 Nhu cầu tìm kiếm sắp xếp Nhu cầu tìm kiếm sắp xếp dữ liệu trong 1 hệ thống thông tin dữ liệu trong 1 hệ thống thông tin  Có nhiều giải thuật tìm kiếm sắp xếp Có nhiều giải thuật tìm kiếm sắp xếp  Mức độ hiệu quả của từng giải thuật phụ Mức độ hiệu quả của từng giải thuật phụ thuộc vào tính chất của cấu trúc dữ liệu thuộc vào tính chất của cấu trúc dữ liệu cụ thể mà nó tác động đến. cụ thể mà nó tác động đến.  Dữ liệu được lưu trữ chủ yếu trong bộ nhớ Dữ liệu được lưu trữ chủ yếu trong bộ nhớ chính trên bộ nhớ phụ, do đặc điểm chính trên bộ nhớ phụ, do đặc điểm khác nhau của thiết bò lưu trữ, các thuật khác nhau của thiết bò lưu trữ, các thuật toán tìm kiếm sắp xếp được xây dựng toán tìm kiếm sắp xếp được xây dựng cho các cấu trúc lưu trữ trên bộ nhớ chính cho các cấu trúc lưu trữ trên bộ nhớ chính hoặc phụ cũng có những đặc thù khác nhau. hoặc phụ cũng có những đặc thù khác nhau.  Chương này sẽ trình bày các thuật toán sắp Chương này sẽ trình bày các thuật toán sắp xếp tìm kiếm dữ liệu được lưu trữ trên xếp tìm kiếm dữ liệu được lưu trữ trên bộ nhớ chính - gọi là các giải thuật bộ nhớ chính - gọi là các giải thuật tìm tìm kiếm sắp xếp nội kiếm sắp xếp nội . . Các giải thuật Các giải thuật tìm kiếm nội tìm kiếm nội  Tìm kiếm tuần tự Tìm kiếm tuần tự  Tìm kiếm nhò phân Tìm kiếm nhò phân Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 6 Các giải thuật tìm kiếm nội Các giải thuật tìm kiếm nội Bài toán: Tìm vò trí xuất hiện của phần Bài toán: Tìm vò trí xuất hiện của phần tử có giá trò x trên danh sách đặc a tử có giá trò x trên danh sách đặc a  Tập dữ liệu được lưu trữ là dãy số Tập dữ liệu được lưu trữ là dãy số a a 1 1 , a , a 2 2 , ,a , ,a N N int int a[N]; a[N];  Khoá cần tìm là x Khoá cần tìm là x int int x; x; Tìm kieám tuaàn töï Tìm kieám tuaàn töï Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 8 Tìm kiếm tuần tự Tìm kiếm tuần tự  Bước 1: i = Vò trí đầu; Bước 1: i = Vò trí đầu;  Bước 2: Nếu a[i] = x : Tìm thấy. Dừng, Bước 2: Nếu a[i] = x : Tìm thấy. Dừng, vò trí xuất hiện: i vò trí xuất hiện: i  Bước 3 : i = Vò trí kế(i);// xét tiếp Bước 3 : i = Vò trí kế(i);// xét tiếp phần tử kế trong mảng phần tử kế trong mảng  Bước 4: Nếu i >Vò trí cuối: //Hết mảng Bước 4: Nếu i >Vò trí cuối: //Hết mảng Không tìm thấy. Dừng. Không tìm thấy. Dừng. Ngược lại: Lặp lại Bước 2. Ngược lại: Lặp lại Bước 2. Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 9 Tìm kiếm tuần tự Tìm kiếm tuần tự  Ví dụ: Cho dãy số a Ví dụ: Cho dãy số a 12 12 2 2 8 8 5 5 1 1 6 6 4 4 15 15  Giá trò cần tìm: 8 Giá trò cần tìm: 8  i = 1 i = 1 Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 10 Tìm kiếm tuần tự Tìm kiếm tuần tự  i = 2 i = 2  i = 3 i = 3 [...]... liệu - Tìm kiếm Sắp xếp 23 Tìm kiếm nhò phân  Đánh giá giải thuật:  Giải thuật tìm nhò phân có độ phức tạp tính toán cấp logn: T(n) = O(log 2 n) Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 24 Tìm kiếm nhò phân Nhận xét:  Giải thuật tìm nhò phân dựa vào quan hệ giá trò của các phần tử mảng để đònh hướng trong quá trình tìm kiếm, do vậy chỉ áp dụng được cho những dãy đã có thứ tự  Giải thuật tìm nhò... hiện: mid Bước 23: Nếu a[mid] > x: / /tìm x trong dãy con aleft amid -1 right = mid - 1; Ngược lại / /tìm x trong dãy con amid +1 aright left = mid + 1; //Hết lặp Bước 3: Dừng, không tìm thấy Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 19 Tìm kiếm nhò phân   Ví dụ: Cho dãy số a gồm 8 phần tử: 1 2 4 5 6 8 12 15 Giá trò cần tìm là 8 Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 20 Tìm kiếm nhò phân  left = 1, right... một trong hai giải thuật tìm kiếm trên sao cho có lợi nhất  Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 26 Các giải thuật Sắp xếp nội Đònh nghóa bài toán sắp xếpSắ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ử Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 28 Khái niệm nghòch... giữa của dãy tìm kiếm hiện hành, dựa vào kết quả so sánh này để quyết đònh giới hạn dãy tìm kiếm ở bước kế tiếp là nửa trên hay nửa dưới của dãy tìm kiếm hiện hành Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 18 Tìm kiếm nhò phân Bước 1: left = VTĐ; right = VTC; Bước 2: Trong khi left ≤ right lặp: //đoạn tìm kiếm chưa rỗng Bước 21: mid = (left+right)/2; // lấy mốc so sánh Bước 22: Nếu a[mid] = x: / /Tìm thấy... dựa vào vò trí tìm thấy để kết luận Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 12 Tìm kiếm tuần tự int LinearSearch(int a[], int N, int x) { // mảng gồm N phần tử từ a[0] a[N-1] a[N] = x; // thêm lính canh vào cuối dãy for (int i=0; (a[i]!=x); i++); if (i ai thì x chỉ có thể xuất hiện trong đoạn [ai+1 ,aN] của dãy  Nếu x < ai thì x chỉ có thể xuất hiện trong đoạn [a1 ,ai-1] của dãy Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 17 Tìm kiếm nhò phân  Ý tưởng... so với giải thuật tìm tuần tự do Tnhò phân (n) = O(log 2 n) < Ttuần tự (n) = O(n) Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 25 Tìm kiếm nhò phân Nhận xét: Khi muốn áp dụng giải thuật tìm nhò phân cần phải xét đến thời gian sắp xếp dãy số để thỏa điều kiện dãy số có thứ tự Thời gian này không nhỏ, khi dãy số biến động cần phải tiến hành sắp xếp lại => khuyết điểm chính cho giải thuật tìm nhò phân  Cần... nhò phân  left = 1, right = 8, mid = 4 Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 21 Tìm kiếm nhò phân  left = 5, right = 8, mid = 6 Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 22 Tìm kiếm nhò phân int BinarySearch(int a[],int N,int x ) { int left =0, right = N-1, midle; while (left . giải thuật tìm kiếm, sắp xếp. các giải thuật tìm kiếm, sắp xếp. Nội dung: Nội dung:  Nhu cầu tìm kiếm và sắp xếp dữ liệu Nhu cầu tìm kiếm và sắp xếp dữ liệu. thuật tìm tìm kiếm và sắp xếp nội kiếm và sắp xếp nội . . Các giải thuật Các giải thuật tìm kiếm nội tìm kiếm nội  Tìm kiếm tuần tự Tìm kiếm

Ngày đăng: 06/03/2014, 22:20

Mục lục

  • Tìm kiếm &Sắp xếp

  • Tìm kiếm & Sắp xếp

  • Nhu cầu tìm kiếm và sắp xếp dữ liệu trong 1 hệ thống thông tin

  • Slide 4

  • Các giải thuật tìm kiếm nội

  • Các giải thuật tìm kiếm nội

  • Tìm kiếm tuần tự

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Tìm kiếm nhò phân

  • Tìm kiếm nhò phân

  • Slide 18

  • Slide 19

  • Slide 20

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

Tài liệu liên quan