1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu - Phần 3

37 7 0

Đ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 37
Dung lượng 734,72 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu tham khảo bài giảng môn Cấu trúc dữ liệu - Phần 3 Tìm kiếm và sắp xếp

Trang 3

7

Bài toán tìm ki m

 Bài toán

 Cho m ng 1 chi u A g m N ph n t nguyên Cho bi t s

nguyên x có t n t i trong A hay không? N u có thì cho bi t

i

Trang 6

 Cho m ng 1 chi u A g m N ph n t nguyên Hãy s p x p

m ng A sao cho các ph n t c a A có th t không gi m

(A[0] ≤ A[1] ≤ … ≤ A[N - 1])

 Input: M ng A g m N ph n t nguyên

 Ouput: M ng A g m N ph n t nguyên v i th t không

gi m

Trang 13

(có giá tr nh h n) s đ c n i lên trên

 Sau m i đ t n i b t, ph n t nh nh t s đ c n i lên trên

Trang 18

int x = A[i], pos = i - 1;

while (pos >= 0 && A[pos] > x)

Trang 19

Dãy 1: A[0], A[h], A[2h], …

Dãy 2: A[1], A[1 + h], A[1 + 2h], …

…

Dãy h: A[h - 1], A[h – 1 + h], A[h - 1 + 2h], …

Trang 20

63

Ý t ng

 V i m i b c h, áp d ng thu t toán s p x p chèn tr c ti p

cho t ng dãy con

 Làm m n d n các dãy con b ng cách gi m đ dài c a b c

Chia dãy ban đ u thành len dãy con (các ph n t cách

nhau len v trí trong dãy ban đ u)

S p x p t ng dãy con b ng ph ng pháp chèn tr c ti p

 B c 3: Xét len có đ dài là giá tr h[i] ti p theo và l p l i

b c 2 cho đ n khi xét đ n đ dài len = h[k – 1]

Trang 22

int len = h[step];

for (int i = len; i < N; i++)

int x = A[i], pos = i – len;

while (pos >= 0 && A[pos] > x)

Trang 23

 T n d ng thông tin có đ c trong quá trình s p x p b c

tr c cho các thao tác th c hi n các b c ti p theo

 Tìm ra c u trúc d li u cho phép tích l y thông tin v vi c

Trang 24

i  [l, r], A[i] ≥ A[2*i + 1] và A[i] ≥ A[2*i + 2]

 Các c p ph n t (A[i], A[2*i + 1]) và (A[i], A[2*i + 2])

đ c g i là các c p ph n t liên đ i

7 2*i + 2

4 2*i + 1

Trang 30

112

Cài đ t hàm Heap Sort

void HeapSort(int A[], int N)

Trang 31

 Ch n giá tr c a m t ph n t thu c dãy làm ch t Phân

ho ch dãy c n s p thành 2 dãy con

Dãy bên trái g m các ph n t có giá tr nh h n ho c

Dãy sau khi đ c phân ho ch

 S p x p dãy bên trái và dãy bên ph i thì dãy ban đ u s có

Trang 32

Ch t có giá tr trung v d n đ n s ph n t c a dãy con

bên trái và bên ph i có s l ng t ng đ ng nhau

 Ch n giá tr c a ph n t v trí gi a dãy làm giá tr ch t

v trí gi a dãy = (v trí đ u dãy + v trí cu i dãy)/2

L p t ng i thêm 1 khi A[i] < x

L p gi m j đi 1 khi A[j] > x

Trang 33

dãy ban đ u thành các dãy con có th t

 Th c hi n tr n các dãy con v i nhau nh m gi m b t s dãy

Trang 34

 B c 1: Tách dãy A[0], A[1], …, A[N – 1] thành các đ ng

ch y và phân ph i t ng đ ng ch y cho 2 dãy B, C theo

nguyên t c luân phiên

 B c 2: th c hi n tr n đ gi m s đ ng ch y trên dãy A

Tr n l n l t 1 đ ng ch y c a B v i 1 đ ng ch y c a

C (tính t trái qua) t o thành m t đ ng ch y trên A

N u dãy nào còn đ ng ch y trong khi dãy kia đã h t

Trang 36

 Nh c đi m c a ph ng pháp tr n là đòi h i thêm không

gian b nh ph đ l u các dãy con nên khó áp d ng cho

nh ng tr ng h p dãy c n s p có kích th c l n

 Ph ng pháp tr n th ng đ c ng d ng đ s p x p trên

danh sách liên k t ho c s p x p trên b nh ngoài

Trang 37

139

T ng k t các ph ng pháp s p x p

Selection sort O(N2)

Interchange sort O(N2)

Bubble sort O(N2)

Insertion sort O(N2)

Shell sort

Heap sort O(N.logN)

Quick sort O(N.logN)

Merge sort O(N.logN)

Ngày đăng: 09/05/2021, 18:25