Tải bản đầy đủ (.ppt) (82 trang)

Chương 1 Cấu trúc dữ liệu và giải thuật (Data Structure and algorithms)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (663.8 KB, 82 trang )

1

CấU TRÚC Dữ LIệU VÀ
GIảI THUẬT

DATA STRUCTURE AND
ALGORITHMS


Nội dung môn học
2



Chương 0: Giới thiệu chung về CTDL và GT



Chương 1: Ôn tập C/C++



Chương 2: Đệ quy (Recursion)



Chương 3: Tìm kiếm (Searching)



Chương 4: Sắp xếp (Sorting)





Chương 5: Ngăn xếp - Hàng đợi (Stacks Queues)



Chương 6: Danh sách liên kết (Linked List)



Chương 7: Cây (Tree)
Chương 1: Ôn tập


Đánh giá kết quả
3

Kiểm tra giữa kỳ: thực hành

1.

Điểm Kiểm tra giữa kỳ < 4  không được thi kết thúc môn 



học lại
2.

Kiểm tra cuối kỳ: thực hành



Điểm Kiểm tra cuối kỳ < 5  không được thi kết thúc môn 
học lại

3.

Bài tập lớn: làm các bài tập trong module


4.
5.

Điểm Đề tài < 5  không được thi kết thúc môn  học lại

Thi kết thúc môn: trắc nghiệm
Kiểm tra thường kỳ
Chương 1: Ôn tập


Tài liệu học tập
4



Giáo trình:





Tham khảo:




C & Data Structures, P. S. Deshpande, O. G. Kakde CHARLES RIVER MEDIA, INC. Hingham, Massachusetts.

Giáo trình Cấu trúc dữ liệu 1, Trần Hạnh Nhi – Dương Anh
Đức, Trường ĐHKHTN – ĐHQG TP.HCM.

Phần mềm lập trình:




C-Free
Borland C++

Chương 1: Ơn tập


Nhắc nhở một số quy định


Đi học đúng giờ



Đeo thẻ SV




Không để chuông điện thoại reo trong giờ học



Không nghe điện thoại, nhắn tin trong giờ học



Khơng nói chuyện riêng, làm ồn khi nghe giảng



Mang đầy đủ tài liệu học tập của mơn học (khi
học LT và TH): giáo trình, bài tập, tập chép bài
(hoặc slide bài giảng), usb để lưu bài tập



Phải làm bài tập ở nhà

 Nếu vi phạm: Nhắc nhở chung  Bị mời ra khỏi
lớp  Xóa tên khỏi mơn học
5

Chương 1: Ơn tập


6


Chương 0: Giới thiệu
chung


Nội dung
7

 Cấu trúc dữ liệu




Thuật toán
Độ phức tạp của thuật tốn

Chương 1: Ơn tập


Cấu trúc dữ liệu
8





(1) Sự tổ chức hợp lý của các thành phần dữ liệu,
(2) Tập các thao tác để truy cập các thành phần dữ liệu.
Ví dụ:








Mảng (Array)
Danh sách liên kết (Linked List)
Ngăn xếp (Stack)
Hàng đợi (Queue)
Cây (Tree)




(1) the logical arrangement of data elements, combined with



(2) the set of operations we need to access the elements.
Chương 1: Ôn tập


Nội dung
9

Cấu trúc dữ liệu

 Thuật toán
 Độ phức tạp của thuật tốn



Chương 1: Ơn tập


Thuật tốn
10



Tập các bước có thể tính tốn được để đạt
được kết quả mong muốn (A computable set of
steps to achieve a desired result)



Ví dụ: Tính tổng các số nguyên lẻ từ 1 n








B1: S=0
B2: i=1
B3: Nếu i>n thì sang B7, ngược lại sang B4
B4: S=S+i
B5: i=i+2

B6: Quay lại B3
B7: Tổng cần tìm là S
Chương 1: Ơn tập


Mối quan hệ của CTDL và thuật toán
11

CTDL + Thuật tốn = Chương
trình

Chương 1: Ơn tập


Nội dung
12



Cấu trúc dữ liệu



Thuật toán

 Độ phức tạp của thuật tốn (algorithm


complexity)


Chương 1: Ơn tập


Thời gian thực hiện thuật toán
13



Thời gian giải quyết một bài toán phụ thuộc
vào nhiều yếu tố



Tài nguyên (bộ nhớ,…)





Tốc độ thực thi của máy tính (CPU,…)
Thuật tốn

Làm thế nào đánh giá?

Chương 1: Ôn tập


Độ phức tạp thuật toán
14




Để đánh giá hiệu quả của một thuật tốn, có thể
tính số lượng các phép tính phải thực hiện của
thuật tốn này:











Phép so sánh
Phép gán

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 tốn, tức là độ lớn của đầu vào
Vì thế độ phức tạp thuật toán là một hàm phụ thuộc
đầu vào
Tuy nhiên, khơng cần biết chính xác hàm này mà 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

Chương 1: Ôn tập



Ví dụ
15






Bước 1. Gán Tổng = 0. Gán i = 0.
Bước 2.
int tong=0, i=0;
– Tăng i thêm 1 đơn vị.
do{
– Gán Tổng = Tổng + i
i++;
Bước 3. So sánh i với n
tong+=i;
– Nếu i < n, quay lại bước 2.
}while (i– Ngược lại, dừng thuật tốn.
• Số phép gán của thuật tốn là bao nhiêu?
• Số phép so sánh là bao nhiêu?
 Gán: f(2n + 2), So sánh: f(n)
 Độ phức tạp: O(n)

Chương 1: Ôn tập


Các độ phức tạp thường gặp (GT.53)

16



Độ phức tạp hằng số: O(1) – thời gian chạy
không phụ thuộc vào độ lớn đầu vào



Độ phức tạp tuyến tính: O(n) – thời gian
chạy tỉ lệ thuận với độ lớn đầu vào



Độ phức tạp logarit: O(logn)





Độ phức tạp đa thức: O(P(n)), với P là đa thức có
bậc từ 2 trở lên
Độ phức tạp hàm mũ: O(2n)

Chương 1: Ôn tập


Bảng so sánh các độ phức tạp của
thuật toán
17




Một số lớp thuật tốn

Chương 1: Ơn tập


Thứ tự độ phức tạp của thuật toán
18

O(2 n )

n!

độ phức tạp cao khó chấp nhận
Chng 1: ễn tập


19

Chương 1: Ơn tập C/C++

(Tham khảo tài liệu mơn Phương Pháp Lập Trình)


Chương 1: Ơn tập C/C++
1.



2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

Cấu trúc chương trình C/C++
Các cú pháp cơ bản
Địa chỉ (Address)
Con trỏ (Pointer)
Mảng (Array)
Mảng con trỏ (Pointer array)
Mảng hai chiều (Two-dimensional array)
Cấu trúc (Structure)
Con trỏ cấu trúc (Structure pointer)
Chuỗi (String)
Tập tin (File)
Hàm (Function)
20


1. Cấu trúc chương trình C/C++
21


Cấu trúc chương trình C
#include "stdio.h"
#include "conio.h"
void main() /*ham chinh*/
{
int a=7;
printf( “%d”, a );
getch();
}

Chương 1: Ôn tập


1. Cấu trúc chương trình C/C++
22

Cấu trúc chương trình C++
#include "iostream.h"
#include "conio.h"
void main() /*ham chinh*/
{
int a=7;
cout<< a ;
getch();
}

Chương 1: Ôn tập


1. Cấu trúc chương trình C/C++

23



Qui cách viết chương trình


Các dòng trong cùng một khối thẳng cột



Khối con của một khối lùi vào ít nhất một TAB



Ghi chú thích ở những chỗ cần thiết

Chương 1: Ôn tập


Chương 1: Ơn tập C/C++
1.
2.
3.
4.
5.
6.
7.
8.
9.

10.
11.
12.



Cấu trúc chương trình C/C++
Các cú pháp cơ bản
Địa chỉ (Address)
Con trỏ (Pointer)
Mảng (Array)
Mảng con trỏ (Pointer array)
Mảng hai chiều (Two-dimensional array)
Cấu trúc (Structure)
Con trỏ cấu trúc (Structure pointer)
Chuỗi (String)
Tập tin (File)
Hàm (Function)
24


2. Các cú pháp cơ bản
25



Khai báo biến:

Kiểu_dữ_liệu tên_biến;



Khai báo và khởi tạo biến:

Kiểu_dữ_liệu tên_biến = giá trị;


Khai báo hằng số:

const Kiểu_dữ_liệu tên_biến =
giá trị;
Chương 1: Ôn tập


×