Tải bản đầy đủ (.pdf) (64 trang)

Cơ sở dữ liệu và giải thuật - Thầy Vũ Song Tùng

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 (1.96 MB, 64 trang )

CẤU TRÚC DỮ LIỆU
VÀ GIẢI THUẬT
Vũ Song Tùng
1
NỘI DUNG
2
Giới thiệu chung
Danh sách tuyến tính
Cây
Đồ thị
Sắp xếp
Tìm kiếm
I. Giới thiệu chung
3
Các kỹ thuật lập trình
Ngôn ngữ giả lập trình
Sơ lược về CTDL và giải thuật
I. Giới thiệu chung
4
• Lập trình hàm
– Chia các giai đoạn của chương trình vào các hàm
– Thể hiện những đoạn mã tương tự trong một hàm
– Ưu điểm
• Dễ quản lý
• Tiết kiệm dung lượng chương trình
I. Giới thiệu chung
5
• Lập trình hướng đối tượng
– Trừu tượng hóa các thành phần của chương trình
– Đặc điểm
• Tính đóng gói – các thuộc tính của một thành phần và các hàm


xử lý các thuộc tính đó được định nghĩa trong cùng một khối
• Tính đa hình – cho phép tạo ra nhiều hình thái của một loại
thành phần
• Tính kế thừa – cho phép sử dụng lại các định nghĩa đã có của
một thành phần để tạo ra một thành phần mới
I. Giới thiệu chung
6
• Các quy ước
Các
kiểu dữ liệu

tả


Tập
các số thực, nguyên và nguyên dương


Kiểu
bất kz

    
Mảng
chứa 𝓇  𝓁 + 1 phần tử kiểu
T


Dãy




Tập
hợp
I. Giới thiệu chung
7
• Các quy ước
Toán
tử

tả


Gán


     
So sánh


  
And, Or,
Not logic

++/−−     

  
Làm
tròn xuống và lên

   

Nếu

C
đúng thực hiện
I
,
C
sai thực hiện
J



 

   


Dãy các
phần tử



 

   


Tập
hợp các phần tử


;
Ngắt
các biểu thức
I. Giới thiệu chung
8
• Biểu thức
Loại


pháp
Khai
báo biến

    
Điều kiện





Lặp
xác định

  

  
Lặp
không xác định





I. Giới thiệu chung
9
• Biểu thức
Loại


pháp
Tạo
con trỏ


Cấp
phát bộ nhớ

  

      
Giải
phóng bộ nhớ


Lấy
địa chỉ


Lấy
nội dung trong con trỏ


 
Truy cập

thành viên của con trỏ

  
I. Giới thiệu chung
10
• Hàm và thủ tục

          
    

  
    


        
  
      


I. Giới thiệu chung
11
• Hướng đối tượng

     
    
    


   

 


     

        

I. Giới thiệu chung
12
• Cấu trúc mảng
• Tập hợp các phần tử cùng kiểu
– được sắp xếp liên tiếp trong bộ nhớ
– được xác định vị trí bằng chỉ số
• Thường dùng để lưu trữ các danh sách tuyến tính có
kích thước cố định

      
  


 


 



 


    


I. Giới thiệu chung
13
• Cấu trúc liên kết
• Tập hợp các phần tử (item) lưu trữ dữ liệu (info) và
địa chỉ liên kết (link) đến phần tử khác
• Dùng để lưu trữ danh sách động hoặc các cấu trúc
phi tuyến

  
  
  

    

   
   
   

x
y
x
y
I. Giới thiệu chung
14
• Giải thuật đệ quy
– Giải thuật gọi lại chính nó, gồm 2 thành phần:

• Điều kiện dừng đệ quy
• Gọi đệ quy
– Áp dụng giải thuật đệ quy khiến cho thuật toán
trở nên mạch lạc
I. Giới thiệu chung
15
• Độ phức tạp của thuật toán O(…)
– Số lượng trung bình (T
cp
) của phép toán phức tạp nhất
trong thuật toán
– Độ phức tạp của các thuật toán sắp xếp và tìm kiếm
trong dãy n phần tử:
Thuật
toán
Độ
phức tạp
SelectSort

O
(n
2
)

InsertSort

O
(n
2
)

BubbleSort

O
(n
2
)
QuickSort

O
(nlog
2
n)
HeapSort

O
(nlog
2
n)
LinearSearch

O
(n)
BinarySearch

O
(log
2
n)
II. Danh sách tuyến tính
16

Ngăn xếp
Hàng đợi
Danh sách liên kết
II. Danh sách tuyến tính
17
• Dãy các phần tử được thêm vào (push) và
lấy ra (pop) tại cùng một đầu của dãy
  

 

   

 


      

 

   

 


       

 

 


   


II. Danh sách tuyến tính
18
• Định nghĩa ngăn xếp bằng mảng
     
    
      

   

++    
 



  −−
 
  

       

II. Danh sách tuyến tính
19
• Dãy các phần tử được thêm vào (enqueue)
và lấy ra (dequeue) tại hai đầu khác nhau
của dãy
  


 

   


      

 

   

 


       

 

   


II. Danh sách tuyến tính
20
• Định nghĩa hàng đợi bằng mảng
     
      
    
      


             ++
   

               ++
 



              −−
 
   
II. Danh sách tuyến tính
21
• Danh sách liên kết 2 chiều
• Dãy các phần tử liên kết với phần tử phía sau (next)
và phía trước (prev) trong dãy
         

    

    

II. Danh sách tuyến tính
22
• Mô hình
Danh sách        danh sách
     danh sách





II. Danh sách tuyến tính
23
• Định nghĩa – 



  

    

    
    

   
    

    


  

    
II. Danh sách tuyến tính
24
• Định nghĩa – 

   
        


        





  

  
    



  

  
II. Danh sách tuyến tính
25
• Định nghĩa – 



   

      
       

         

      

      
 

×