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

Bài giảng Thiết kế và đánh giá thuật toán: Sắp xếp nhanh - TS. Lê Nguyên Khôi

20 0 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

Trong lĩnh vực Công Nghệ Thông Tin nói riêng, yêu cầu quan trọng nhất của người học đó chính là thực hành. Có thực hành thì người học mới có thể tự mình lĩnh hội và hiểu biết sâu sắc với lý thuyết. Với ngành mạng máy tính, nhu cầu thực hành được đặt lên hàng đầu. Tuy nhiên, trong điều kiện còn thiếu thốn về trang bị như hiện nay, người học đặc biệt là sinh viên ít có điều kiện thực hành. Đặc biệt là với các thiết bị đắt tiền như Router, Switch chuyên dụng

Thiết Kế & Đánh Giá Thuật Toán Sắp Xếp Nhanh TS Lê Nguyên Khôi Trường Đại Học Công Nghệ - ĐHQGHN Nội Dung Chia để trị  Phân hoạch  Phân tích trường hợp xấu  Phân hoạch ngẫu nhiên  Phân tích  Sắp Xếp Nhanh xuất C.A.R Hoare, 1962  Dựa kỹ thuật Chia – Để – Trị  Hiệu thực tế (tinh chỉnh)  Đề Chia Để Trị Sắp xếp nhanh mảng -phần tử tăng dần:    Chia: phân hoạch mảng thành mảng dựa phần tử chốt  cho phần tử thuộc mảng bên trái ≤  phần tử thuộc mảng bên phải ≥  Trị: áp dụng đệ quy xếp mảng Gộp: hiển nhiên Lưu ý: phân hoạch với thời gian tuyến tính Phân Hoạch – Mã Giả Partition , , ⇒ ⇒ ← ← for  ←   to if   ≤  then ← 1 exchange  ↔   exchange   ↔  return  , chốt   Duy trì Phân Hoạch – Ví Dụ 10 13 11 i j 13 10 11 i j 10 13 11 i j 13 10 11 i j 13 10 11 i=1 j=2->4 i=2 j=5->6 i=3 j=7 i=4 j=8 i=4 Phân Hoạch – Cách Khác Partition , , ) ← ⇒ ⇒  , chốt  Xem tr 171-172 Phân Hoạch – Bài Tập 7.1-1 tr.173 Sắp Xếp Nhanh - Mã Giả QuickSort , , ) if  < then  ← Partition , , QuickSort (, ,  − 1) QuickSort (,  + 1, ) Lời gọi hàm đầu tiên: QuickSort , 1, ) Sắp Xếp Nhanh - Phân Tích  Giả sử phần tử dãy khác (khơng có phần tử nhau)  Thực tế có số thuật tốn phân hoạch khác tốt cho trường hợp có phần tử  Cho  thời gian chạy trường hợp xấu với mảng  phần tử Trường Hợp Xấu Nhất    Mảng xếp Phân hoạch dựa phần tử chốt phần tử lớn nhỏ mảng Một hai mảng ln ln khơng có phần tử   = = = ∈  −1 +  + −1 +  −1 +   10 Trường Hợp Xấu Nhất   = −1 +   Thay  Số học  Cây đệ quy  Định lý tổng quát Phải dạng   =  /    11 Trường Hợp Tốt Nhất !!! Partition chia mảng thành phần (may mắn)   = 2 /2    =   log  (giống MergeSort) 12 Trường Hợp Khác Partition chia mảng với tỉ lệ   = #  #$  &  #$ # & : ? #$ #$   Thời gian chạy   = ? ( log#$  ≤   ≤ ( log#$/&   ) 13 Trường Hợp Khác Giả sử phân hoạch liên tục theo trường hợp xấu tốt *  = 2+ /2 +   +  =* −1 +    *  =2 * −1 + 2  = 2* − +   *  ∈   log  tốt xấu +  14 Phân Hoạch Ngẫu Nhiên Phân hoạch dựa phần tử ngẫu nhiên:  Thời gian chạy không phụ thuộc vào liệu đầu vào  Không cần giả thiết phân phối liệu đầu vào  Không liệu tạo nên trường hợp xấu  Trường hợp xấu hàm sinh số ngẫu nhiên 15 Phân Hoạch – Vấn Đề Khác  Giả thiết phân tích thời gian chạy  Mảng bao gồm phần tử khác Mảng có phần tử giống nhau?  Trường hợp đặc biệt, mảng toàn phần tử giống   Thời gian chạy theo trường hợp xấu 16 Phân Hoạch – Vấn Đề Khác  Giả thiết phân tích thời gian chạy  Mảng bao gồm phần tử khác Mảng có phần tử giống nhau?  Trường hợp đặc biệt, mảng toàn phần tử giống   Thời gian chạy theo trường hợp xấu 17 Phân Hoạch – Vấn Đề Khác  Phân hoạch thành mảng Mảng bên trái <   Mảng bên phải >   Mảng =   Thời gian chạy nhanh  Trường hợp đặc biệt, tất phần tử mảng giống    Thời gian chạy tuyến tính Mã giả? 18 Áp Dụng Thực Tế Sắp xếp nhanh nói chung thuật tốn xếp tốt  Thơng thường xếp nhanh chạy nhanh gấp đôi so với xếp gộp   Hằng số (   tương đối nhỏ Sắp xếp nhanh hưởng lợi đáng kể từ việc tùy chỉnh mã  Sắp xếp nhanh chạy tốt với nhớ đệm nhớ ảo  19

Ngày đăng: 02/07/2023, 05:27

Xem thêm: