1. Trang chủ
  2. » Luận Văn - Báo Cáo

SẮP XẾP VÀ TÌM KIẾM TRÊN CTDL MẢNG

41 419 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 0,92 MB

Nội dung

SẮP XẾP VÀ TÌM KIẾM TRÊN CTDL MẢNG Nhóm 2: Nguyễn Khắc Duy Nguyễn Thị Lan Ngọc Võ Hoàng Yến GIỚI THIỆU CTDL mảng là một trong số những CTDL thông dụng nhất. Mảng là một tập hợp có thứ tự các giá trị có cùng cấu trúc được lưu trữ liên tiếp nhau trong bộ nhớ.(Mảng là một danh sách tuyến tính). CÁC THUẬT TOÁN TÌM KIẾM VÀ SẮP XẾP TÌM KIẾM  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 thực hiện nhất để khai thác thông tin.  VD: tra cứu từ điển, tìm sách thư việ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 rất lớn HAI GIẢI THUẬT THƯỜNG DÙNG ĐỂ TÌM KIẾM DỮ LIỆU  Tìm kiếm tuần tự  Tìm kiếm nhị phân TÌM KIẾM TUẦN TỰ  Một kĩ thuật tìm kiếm đơn giản và cổ điển.  Ý tưởng: So sánh x lần lượt với từng phần tử của mảng cho đến khi gặp phần tử có khóa cần tìm, hoặc đã tìm hết mảng mà không thấy x. 12 2 8 5 1 X=8 12 2 8 5 1 X=8 12 2 8 5 1 X=8 i=0 i=1 i=2 Tìm thấy rồi i=2 Tìm thấy rồi i=0 i=1 12 2 8 5 1 X=8 Vị trí của x cần tìm là:2 12 2 8 5 X=7 i=0 12 2 8 5 X=7 i=1 12 2 8 5 X=7 i=2 12 2 8 5 X=7 i=3 KHÔNG TÌM THẤY ! i=2 KHÔNG TÌM THẤY !!!!! X=7 i=0 i=1 12 2 8 5 1 i=3 i=4 [...]...NHẬN XÉT  Giải thuật tìm kiếm tuần tự không phụ thuộc thứ tự các phần tử mảng  là cách tổng quát nhất để tìm kiếm trên một dãy số bất kỳ  Độ phức tạp: T(n)=O(n) TÌM KIẾM NHỊ PHÂN  Tìm kiếm trong dãy số đã có thứ tự  Ý tưởng: Tại mỗi bước tiến hành so sánh x với phần tử giữa của mảng  giới hạn mảng tìm kiếm ở nửa trước hay nửa sau mảng  thu hẹp vùng tìm kiếm (nhị phân) TÌM THẤY RỒI ! X=8 1 L=0... cần tìm là 8: Quá trình tìm: L=0,R=7M=3 L=4,R=7M=5 6 8 L=4 M=5 12 15 R=7 NHẬN XÉT  Giải thuật tìm kiếm nhị phân chỉ áp dụng cho những mảng đã được sắp xếp  Tiết kiệm thời gian rất nhiều so với tìm kiếm tuần tự  Độ phức tạp: T(n)=O(log2n) SẮP XẾP  Sắp xếp là quá trình xử lí một danh sách để chúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó  Sắp xếp dữ liệu là một nhu cầu thường thấy và cần... thiết Chẳng hạn, trước khi tìm kiếm nhị phân, mảng cần được sắp xếp CÁC GIẢI THUẬT SẮP XẾP THƯỜNG THẤY  ExchangeSort (Chọn trực tiếp)  InsertSort (Chèn trực tiếp)  BubbleSort (Nổi bọt)  HeapSort  ShellSort  QuickSort EXCHANGESORT (Chọn trực tiếp)  Mô phỏng cách sắp xếp tự nhiên nhất trong thực tế  Ý tưởng: thực hiện n-1 lần việc đưa phần tử nhỏ nhất về vị trí đúng ở đầu mảng 12 2 i=0 8 5 1 i=1... trạng mảng ban đầu  Số lần hoán vị phụ thuộc tình trạng mảng ban đầu Trường hợp Số lần so sánh Số phép gán Tốt nhất n(n-1)/2 0 Xấu nhất n(n-1)/2 3n(n-1)/2 INSERTSORT (Chèn trực tiếp)  Ý tưởng: lần lượt chèn phần tử a[i] vào vị trí thích hợp của đọan đã được sắp để được dãy mới a[1],a[2],…,a[i] có thứ tự 12 2 8 5 1 i=1 i=2 i=3 i=4 HOÀN TẤT ! Nhận xét  Độ phức tạp: T(n)=O(n2)  Số phép so sánh và dời... con gồm các phần tử cách nhau h vị trí – Sắp xếp các phần tử trong cùng dãy con một cách nhanh chóng (vị trí đúng tương đối) – Giảm khỏang cách h tạo các dãy con mới – Tiếp tục sắp xếp … Giả sử chọn các H=3,2,1 H=3 H=2 H=1 12 2 8 5 1 i=0 i=1 i=2 i=3 i=4 Hoàn tất! Nhận xét  Việc đánh giá giải thuật ShellSort rất phức tạp  Hiệu quả của thuật toán phụ thuộc vào h  Nếu chọn h thích hợp,độ phức tạp... ! Nhận xét  Độ phức tạp: T(n)=O(n2)  Số phép so sánh và dời chỗ phụ thuộc vào tình trạng ban đầu của mảng Trường hợp Số phép so sánh Số phép gán Tốt nhất Xấu nhất n-1 n(n-1)/2 2(n-1) n(n+1)/2-1 BUBBLESORT (Nổi bọt)  Ý tưởng: xuất phát từ cuối mảng đổi chỗ các cặp phần tử kế cận để đưa phần tử nhỏ hơn về vị trí đúng đầu mảng hiện hành Sau đó không xét đến nó nữa 12 2 8 5 1 i=0 i=1 i=2 i=3 j-1 j=4... a[i] ≥ a[2i+1] {(a[i],a[2i]),(a[i],a[2i+1]) là các cặp phần tử liên đới} HEAPSORT  Khắc phục nhược điểm của chọn trực tiếp  Giải thuật: – Gđ 1: hiệu chỉnh dãy số ban đầu thành heap – Gđ 2: sắp xếp dãy số dựa trên heap: + Đưa phần tử lớn nhất về cuối dãy + Lọai phần tử lớn nhất khỏi heap Hiệu chỉnh phần còn lại thành heap Ví dụ minh họa : 12 2 8 5 1 5 1 L1=3 L2=4 5 2 5 2 L1=3 L2=4 i=2 12 2 8 i=1 . SẮP XẾP VÀ TÌM KIẾM TRÊN CTDL MẢNG Nhóm 2: Nguyễn Khắc Duy Nguyễn Thị Lan Ngọc Võ Hoàng Yến GIỚI THIỆU CTDL mảng là một trong số những CTDL thông dụng nhất. Mảng là một tập. XÉT  Giải thuật tìm kiếm nhị phân chỉ áp dụng cho những mảng đã được sắp xếp.  Tiết kiệm thời gian rất nhiều so với tìm kiếm tuần tự.  Độ phức tạp: T(n)=O(log 2 n). SẮP XẾP  Sắp xếp là quá. XÉT  Giải thuật tìm kiếm tuần tự không phụ thuộc thứ tự các phần tử mảng  là cách tổng quát nhất để tìm kiếm trên một dãy số bất kỳ.  Độ phức tạp: T(n)=O(n) TÌM KIẾM NHỊ PHÂN  Tìm kiếm trong

Ngày đăng: 04/04/2015, 15:13

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w