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

Bài giảng cấu trúc dữ liệu chương 11 nguyễn xuân vinh

35 316 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 35
Dung lượng 135,2 KB

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

Nội dung

 Thuật toán Algorithm là một dãy hữu hạn các bước có thể thực thi được mà theo đó ta đạt được lời giải của bài toán..  Từ Algorithm bắt nguồn từ nhà toán học Ả Rập Al-Khwārizmī  Thuật

Trang 1

Nguyễn Xuân Vinh nguyenxuanvinh@hcmuaf.edu.vn

CẤU TRÚC DỮ LIỆU DATA STRUCTURES

[214331]

Trang 2

Thuật toán (Algorithm) là một dãy hữu hạn các bước có thể thực

thi được mà theo đó ta đạt được lời giải của bài toán

Từ Algorithm bắt nguồn từ nhà toán học Ả Rập Al-Khwārizmī

 Thuật toán giải phương trình bậc 2, thuật toán tìm số lớn nhất trong dãy số, thuật toán sắp xếp…

Trang 3

– B2: Nếu số kế tiếp lớn hơn max thì gán giá trị max = số đó

– B3: Lặp lại bước 2 nếu còn phần tử trong dãy

– B4: Dừng khi không còn phần tử trong dãy, số max lúc này là phần tử lớn nhất của dãy

Trang 6

Độ phức tạp của thuật toán Thời gian (số thao tác)

Không gian

Dữ liệu nhập

Trang 7

• Thời gian mà máy tính khi thực hiện một thuật toán phụ thuộc vào:

– Bản thân thuật toán đó

– Máy tính đang thực thi thuật toán

• Đánh giá hiệu quả của một thuật toán có thể:

– Xét số các phép tính phải thực hiện khi thực hiện thuật toán này

Trang 10

– Phụ thuộc vào ngôn ngữ lập trình

– Trình độ, kỹ năng của người viết

– Phần cứng máy tính dùng để thử nghiệm

– Sự phức tạp của việc xây dựng một bộ dữ liệu thử

Trang 12

• Thông thường số các phép tính được thực hiện phụ thuộc vào cỡ của bài toán, tức là độ lớn của đầu vào

• Trong thực tiễn, chỉ cần biết một ước lượng đủ tốt của chúng

• Để ước lượng độ phức tạp của một thuật toán ta thường dùng khái niệm big-O

Trang 14

Dữ liệu nhập Thời gian (số thao tác)

Trang 15

• Thời gian tối thiểu (trường hợp tốt nhất).

• Thời gian tối đại (trường hợp xấu nhất)

• Thời gian trung bình

• Ta thường dùng các ký hiệu sau để mô tả cho độ phức tạp thuật toán

– Bậc big-O: chặn trên, trường hợp tốt nhất

– Bậc big-Ω: chặn dưới, trường hợp xấu nhất

– Bậc Θ (bậc Theta): chặn 2 đầu, trung bình

Trang 16

Với n là độ lớn đầu vào:

 Bài toán giai thừa: n là số cần tính giai thừa

 Bài toán sai phân: n là số chữ số có nghĩa cần đạt được

 Các phép tính trên ma trận: n là số hàng hoặc số cột của ma trận

Trang 17

 log(n!)  log(n n ) = n.log(n)

 log(n!) = O(n.log(n)) (f(n) = O(g(n))

Trang 20

O 2

) 1 n

n n

n n

n

2 1

k

3 n

1 k

2

3 n

2 2

2 n

1 k

2 2

2 2

Trang 25

 f = (g) nếu f = O(g) và f = (g) (i.e f = O(g) và g = O(f)).

f = O(g) nếu c>0, kN sao cho

n  k  f(n)  cg(n)

(i.e ) Khi đó g được gọi là

tăng nhanh hơn f

0 )

n ( g

) n (

f lim

Trang 32

void quickSort(int[] a, int left, int right) { int i, j, x;

Ngày đăng: 03/12/2015, 03:45