Slide 1 Giảng viên Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Giới thiệu Cấu trúc dữ liệu và giải thuật 1 Nội dung Cấu trúc dữ liệu và giải thuật HCMUS 2011 2 Thông tin môn học Quy địn[.]
Trang 1Cấu trúc dữ liệu và giải thuật
GIỚI THIỆU
Trang 2Nội dung
2
Thông tin môn học
Quy định môn học
Tài liệu tham khảo
Nội dung môn học
Trang 3Thông tin môn học – Giáo viên
3
Lý thu yết: .vn) s.edu ần g tu fit.hcmu hàn T4 (vcnam@ sáng t1-t4 Nam học: ăn Chí iờ •V •G
•Đ
ịa điểm:
Trang 4Trang web môn học
Trang 5 Lần 1: trừ 30% trên tổng số điểm của môn học.
Lần 2: trừ 50% trên tổng số điểm của môn học.
Trang 6Thông tin môn học – Giờ học Lý thuyết
6
KHÔNG bắt buộc phải có mặt Nếu đi học, phải
đi học đúng giờ và nghiêm túc.
Có thể có các bài kiểm tra nhỏ với nội dung của phần học có liên quan.
Có thể có điểm trừ cho việc chuẩn bị bài, làm bài không tốt.
Trang 7Thông tin môn học – Giờ học thực hành
Trang 8Tài liệu tham khảo
8
Adam Drozdek (2001), Data structures and
Algorithms in C++ (Second Edition)
Dương Anh Đức – Trần Hạnh Nhi (2003), Nhập môn Cấu trúc dữ liệu và giải thuật, NXB ĐHQG TP.HCM
Đinh Mạnh Tường (2008), Cấu trúc dữ liệu và thuật toán, NXB ĐHQG HN.
Đỗ Xuân Lôi (2007), Cấu trúc dữ liệu và giải thuật,
NXB ĐHQG HN.
Thomas H Cormen, Charles E Leiserson, Ronald L
Rivest and Clifford Stein (2001), Introduction to
Algorithms (Second Edition)
Trang 9Nội dung môn học
Trang 10Nội dung môn học
10
Cái khái niệm cơ bản
• Kiểu dữ liệu: cơ bản, có cấu trúc, trừu tượng
• Đánh giá thuật toán
• Ôn tập: Con trỏ, Đệ qui
Các thuật toán sắp xếp
• Selection Sort, Heap Sort, Merge Sort, Quick Sort, Radix Sort
Trang 11Nội dung môn học
• Danh sách liên kết, Stack – Queue, Hàng đợi ưu tiên
• Cấu trúc cây: nhị phân tìm kiếm, AVL, AA,
• B-cây
• Bảng băm
Trang 12Nội dung môn học
Trang 14Mục đích môn học
14
Học môn này để làm gì?
Trang 15Ngôn ngữ lập trình
15
Trang 16Ngôn ngữ lập trình
16
George Boole
Trang 17Ngôn ngữ lập trình
17
Alan Turing
Trang 18Ngôn ngữ lập trình
18
Von Neumann
Trang 19Thế nào là thuật toán?
19
An algorithm is a sequence of steps
required to accomplish a task
(Al-Khwārizmī).
Thuật toán là tập hợp hữu hạn các lệnh chính xác để thực hiện tính toán hoặc để giải một bài toán (Rosen)
Al-Khwārizmī
Trang 20Thuật toán – Các giai đoạn thực hiện
Trang 215 đặc tính cơ bản của thuật toán
Tính đúng đắn
Trang 22Thuật toán – Phương pháp biểu diễn
22
Biểu diễn
Biểu diễn
Lưu đồ
Bảng quyết định
Bảng quyết định
Mã giả
Ngôn ngữ lập trình
Ngôn ngữ lập trình
Trang 23Ví dụ về lưu đồ
23
Nhập vào 2 số nguyên
Nhập vào 2 số nguyên
Tính tổng 2 số Bắt đầu
Hiển thị kết quả
Trang 25Thế nào là cấu trúc dữ liệu?
25
Cấu trúc dữ liệu là một cách tổ chức các dữ liệu thành một đơn
vị hoàn chỉnh bao gồm các thành phần (phần tử) là các dữ liệu cơ bản, các mối liên kết giữa các phần tử ấy và các thao tác cơ bản trên chúng.
Các thao tác này thường được gọi là các phép toán trên cấu trúc
dữ liệu xác định Các phép toán cơ bản thường gặp là tạo lập
(create), hủy (dipose), thêm (add), chèn (insert), xóa (delete), tìm
kiếm (search),
Tùy theo yêu cầu của thuật toán, khi thiết kế chương trình người
ta định nghĩa và sử dụng các cấu trúc dữ liệu khác nhau Các cấu
trúc dữ liệu cơ bản hay dùng là: mảng (array), danh sách (list),
ngăn xếp (stack), hàng đợi (queue), cây(tree),
[Wikipedia, tháng 6 - 2009]
Trang 27Mở rộng
27
Programming is for programmers
[C++ in Action]