SlideShare a Scribd company logo
1 of 24
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Chương 9: Bảng
Ma trận 2 chiều vs. 1 chiều A[i, j] B[ max_row*i + j] C[i + max_col*j]
Bảng và chỉ mục
Radix sort Bước 1 Bước 2 Bước 3 r a t m o p c a t m a p c a r t o p c o t t a r r a p r a t m o p c a t m a p c a r t o p c o t t a r r a p r a t m o p c a t m a p c a r t o p c o t t a r r a p r a t m o p c a t m a p c a r t o p c o t t a r r a p
Đánh giá Radix sort ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Radix sort trên DSLK
Giải thuật Radix sort trên DSLK Algorithm  radix_sort Input:  danh sách cần sắp thứ tự Output:  danh sách đã sắp thứ tự //Mỗi queue chứa các phần tử có ký tự tương ứng 1.  queues là một dãy có max_character hàng //Lặp k bước, kiểm tra các ký tự tại vị trí k 2.  for  position = size(khóa)  to  0 2.1.  while  (danh sách còn) 2.1.1.  Lấy phần tử đầu tiên 2.1.2.  Tính toán thứ tự của chữ cái ở vị trí k trong khóa 2.1.3.  Đẩy phần tử này vào queue tương ứng 2.2.  Nối tất cả các queue lại với nhau thành danh sách End r adix_sort
Mã C++ Radix sort trên DSLK const int  max_chars = 28 ; template  < class  Record> void  Sortable_list<Record>  ::  radix_sort( ) { Record data ; Queue queues[max_chars] ; for  ( int  position = key_size − 1 ;  position >= 0 ;  position−−) { //  Loop from the least to the most significant position. while  (remove(0 ,  data) == success) { int  queue_number = alphabetic_order(data . key_letter(position)) ; queues[queue_number] . append(data) ; //  Queue operation. } rethread(queues) ; //  Reassemble the list. } }
Nối các queue liên kết ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tăng tốc tra cứu ,[object Object],[object Object],[object Object],[object Object],search 1 key position search 2 key position Magic
Bảng Hash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hàm Hash ,[object Object],[object Object],[object Object],[object Object]
Ví dụ dùng bảng Hash T U V M D O char_index:  Space=0, A=1, B=2, …, Z=27 hash(x) = char_index(x) % 10 Các khóa: M, O, T, V, I, D, U I Tìm V Tìm F Không có 1 U 6 4 9 2 0 5 3 F D I V T O M 0 1 2 3 4 5 6 7 8 9
Phương pháp Địa chỉ mở (Open Addressing) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Thiết kế bảng Hash dùng địa chỉ mở const int  hash_size = 997 ; //  a prime number of appropriate size class  Hash_table { public: Hash_table( ) ; void  clear( ) ; Error_code insert( const  Record &new entry) ; Error_code retrieve( const  Key &target ,  Record &found)  const; private: Record table[hash_size] ; } ; Đảm bảo phép thử tuyến tính không bị lặp vòng
Giải thuật thêm phần tử dùng bảng Hash địa chỉ mở Algorithm  Hash_Insert Input:  bảng Hash, mẫu tin cần thêm vào Output:  bảng Hash đã có mẫu tin thêm vào 1.  probe = hash(input_key) 2.  increment = 1  //Dùng khi đụng độ 3.  while  (table[probe] không rỗng)  //Có đụng độ //Dùng các phép thử (tuyến tính, bậc hai, …) 3.1.  probe = (probe + increment) % hash_size 3.2.  increment = increment + 2  //Thử bậc hai 4.  table[probe] = new_data End  Hash_insert
Mã C++ thêm phần tử dùng bảng Hash địa chỉ mở Error_code Hash_table  ::  insert( const  Record &new entry) { Error_code result = success ; int  probe_count = 0 ,  increment = 1 ,  probe ;  Key null ;  probe = hash(new_entry) ; while  (table[probe] != null && table[probe] != new_entry  && probe_count < (hash size + 1)/2) {  probe_count++ ; probe = (probe + increment)%hash_size ; increment += 2 ;  } if  (table[probe] == null) table[probe] = new_entry ; else if  (table[probe] == new_entry) result = duplicate_error ; else  result = overflow ; return  result ; }
Phương pháp nối kết (chained hash table)
Lợi ích của phương pháp nối kết ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Thiết kế bảng Hash nối kết const int  hash_size = 997 ; //  a prime number of appropriate size class  Hash_table { public: //Specify methods here private: List<Record> table[hash_size] ; } ;
Thiết kế các phương thức của bảng Hash nối kết ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Đánh giá phương pháp dùng bảng Hash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
So sánh các phương pháp
So sánh các phương pháp (tt.)

More Related Content

What's hot

Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Hồ Lợi
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTMasterCode.vn
 
bai tap cau truc du lieu ptit
bai tap cau truc du lieu ptitbai tap cau truc du lieu ptit
bai tap cau truc du lieu ptitMit Rin
 
Ctdl+va+gt chuong+5 8
Ctdl+va+gt chuong+5 8Ctdl+va+gt chuong+5 8
Ctdl+va+gt chuong+5 8Do Ngoc Tuan
 
Ctdl C08
Ctdl C08Ctdl C08
Ctdl C08giang
 
Ctdl c4-cay
Ctdl c4-cayCtdl c4-cay
Ctdl c4-cayutteoteo
 
Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Hồ Lợi
 
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTBài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTMasterCode.vn
 
Lớp 11 --chương 4 -- bài 11 --Kiểu mảng
Lớp 11 --chương 4 -- bài 11 --Kiểu mảngLớp 11 --chương 4 -- bài 11 --Kiểu mảng
Lớp 11 --chương 4 -- bài 11 --Kiểu mảngHoàng Kỳ Anh
 
Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)Võ Tâm Long
 
C2 tim kiem
C2 tim kiemC2 tim kiem
C2 tim kiemhiep0109
 
More about structure - Tìm hiểu sâu về kiểu struct
More about structure - Tìm hiểu sâu về kiểu structMore about structure - Tìm hiểu sâu về kiểu struct
More about structure - Tìm hiểu sâu về kiểu structSon Le
 
Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02Trần Huy
 
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTMasterCode.vn
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02kikihoho
 

What's hot (20)

Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Bài tập CTDL và GT 12
Bài tập CTDL và GT 12
 
Cau 2
Cau 2Cau 2
Cau 2
 
Cau 2
Cau 2Cau 2
Cau 2
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
 
bai tap cau truc du lieu ptit
bai tap cau truc du lieu ptitbai tap cau truc du lieu ptit
bai tap cau truc du lieu ptit
 
Ctdl+va+gt chuong+5 8
Ctdl+va+gt chuong+5 8Ctdl+va+gt chuong+5 8
Ctdl+va+gt chuong+5 8
 
Ctdl C08
Ctdl C08Ctdl C08
Ctdl C08
 
Ctdl c4-cay
Ctdl c4-cayCtdl c4-cay
Ctdl c4-cay
 
Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1
 
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTBài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
 
Bai11
Bai11Bai11
Bai11
 
Ctdl c1
Ctdl c1Ctdl c1
Ctdl c1
 
Lớp 11 --chương 4 -- bài 11 --Kiểu mảng
Lớp 11 --chương 4 -- bài 11 --Kiểu mảngLớp 11 --chương 4 -- bài 11 --Kiểu mảng
Lớp 11 --chương 4 -- bài 11 --Kiểu mảng
 
Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)
 
C2 tim kiem
C2 tim kiemC2 tim kiem
C2 tim kiem
 
More about structure - Tìm hiểu sâu về kiểu struct
More about structure - Tìm hiểu sâu về kiểu structMore about structure - Tìm hiểu sâu về kiểu struct
More about structure - Tìm hiểu sâu về kiểu struct
 
Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02
 
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
 
Chg2 danh sach
Chg2 danh sachChg2 danh sach
Chg2 danh sach
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02
 

Viewers also liked

Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàngGiáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàngShin Nosuke
 
Slide báo cáo cuối kì system hacking-Trần Nguyễn Lộc
Slide báo cáo cuối kì system hacking-Trần Nguyễn LộcSlide báo cáo cuối kì system hacking-Trần Nguyễn Lộc
Slide báo cáo cuối kì system hacking-Trần Nguyễn LộcLoc Tran
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01giang
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05giang
 
System hacking_Athena
System hacking_AthenaSystem hacking_Athena
System hacking_AthenaHuynh Khang
 
Ctdl C02
Ctdl C02Ctdl C02
Ctdl C02giang
 
Ctdl C04
Ctdl C04Ctdl C04
Ctdl C04giang
 
Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...
Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...
Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...Security Bootcamp
 
Ctdl C03
Ctdl C03Ctdl C03
Ctdl C03giang
 
Bài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPT
Bài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPTBài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPT
Bài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPTMasterCode.vn
 
tìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mậttìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mậtanhkhoa2222
 
Chương 6 Bảo mật - Giáo trình FPT
Chương 6 Bảo mật - Giáo trình FPTChương 6 Bảo mật - Giáo trình FPT
Chương 6 Bảo mật - Giáo trình FPTMasterCode.vn
 
Man In The Middle - Hacking Illustrated
Man In The Middle - Hacking IllustratedMan In The Middle - Hacking Illustrated
Man In The Middle - Hacking IllustratedInfoSec Institute
 
Bài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPT
Bài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPTBài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPT
Bài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPTMasterCode.vn
 
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTBài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTMasterCode.vn
 
Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...
Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...
Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...MasterCode.vn
 
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...MasterCode.vn
 

Viewers also liked (20)

Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàngGiáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
 
Slide báo cáo cuối kì system hacking-Trần Nguyễn Lộc
Slide báo cáo cuối kì system hacking-Trần Nguyễn LộcSlide báo cáo cuối kì system hacking-Trần Nguyễn Lộc
Slide báo cáo cuối kì system hacking-Trần Nguyễn Lộc
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05
 
System hacking_Athena
System hacking_AthenaSystem hacking_Athena
System hacking_Athena
 
Ctdl C02
Ctdl C02Ctdl C02
Ctdl C02
 
Ctdl C04
Ctdl C04Ctdl C04
Ctdl C04
 
Avl
AvlAvl
Avl
 
Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...
Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...
Security Bootcamp 2013 - Giải pháp phát hiện xâm nhập mạng không dây - WIDS -...
 
Wireless
WirelessWireless
Wireless
 
Ctdl C03
Ctdl C03Ctdl C03
Ctdl C03
 
man in the middle
man in the middleman in the middle
man in the middle
 
Bài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPT
Bài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPTBài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPT
Bài 4: Bảo mật máy chủ, ứng dụng, dữ liệu và mạng - Giáo trình FPT
 
tìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mậttìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mật
 
Chương 6 Bảo mật - Giáo trình FPT
Chương 6 Bảo mật - Giáo trình FPTChương 6 Bảo mật - Giáo trình FPT
Chương 6 Bảo mật - Giáo trình FPT
 
Man In The Middle - Hacking Illustrated
Man In The Middle - Hacking IllustratedMan In The Middle - Hacking Illustrated
Man In The Middle - Hacking Illustrated
 
Bài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPT
Bài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPTBài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPT
Bài 5: Quản trị một mạng an toàn và Bảo mật các mạng không dây - Giáo trình FPT
 
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTBài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
 
Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...
Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...
Bài 3: Tấn công vào ứng dụng và mạng, đánh giá khả năng thiệt hại và làm giảm...
 
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
 

Similar to Ctdl C09

ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNguest717ec2
 
Ctdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepCtdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepNguyễn Ngọc Hà
 
THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThemCNTT-DHQG
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toanHữu Duy Duy
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfHngTrn365275
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfnguyenkaka2
 
TRNG_DI_HC_NHA_TRANG.pdf
TRNG_DI_HC_NHA_TRANG.pdfTRNG_DI_HC_NHA_TRANG.pdf
TRNG_DI_HC_NHA_TRANG.pdfPHNGUYNNGC9
 
Bai giang 4 thuat toan
Bai giang 4   thuat toanBai giang 4   thuat toan
Bai giang 4 thuat toanladoga
 
Thuat toan tin hoc
Thuat toan tin hocThuat toan tin hoc
Thuat toan tin hocladoga
 
Huong dan 8 o so
Huong dan 8 o soHuong dan 8 o so
Huong dan 8 o soshjdunglv
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_Thân Văn Ngọc
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_Vũ Đình
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_LeeRyuRyu
 

Similar to Ctdl C09 (20)

Giáo trình excel nâng cao tud
Giáo trình excel nâng cao   tudGiáo trình excel nâng cao   tud
Giáo trình excel nâng cao tud
 
ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáN
 
Ctdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepCtdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xep
 
THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThem
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toan
 
Ctdl de so 14
Ctdl   de so 14Ctdl   de so 14
Ctdl de so 14
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
TRNG_DI_HC_NHA_TRANG.pdf
TRNG_DI_HC_NHA_TRANG.pdfTRNG_DI_HC_NHA_TRANG.pdf
TRNG_DI_HC_NHA_TRANG.pdf
 
Bai giang 4 thuat toan
Bai giang 4   thuat toanBai giang 4   thuat toan
Bai giang 4 thuat toan
 
Thuat toan tin hoc
Thuat toan tin hocThuat toan tin hoc
Thuat toan tin hoc
 
Đệ quy và quay lui
Đệ quy và quay luiĐệ quy và quay lui
Đệ quy và quay lui
 
Section 2
Section 2Section 2
Section 2
 
Ctdl 1993
Ctdl   1993Ctdl   1993
Ctdl 1993
 
Huong dan 8 o so
Huong dan 8 o soHuong dan 8 o so
Huong dan 8 o so
 
Baitap ktlt
Baitap ktltBaitap ktlt
Baitap ktlt
 
Baitap ktlt
Baitap ktltBaitap ktlt
Baitap ktlt
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
 

Ctdl C09

  • 1. CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Chương 9: Bảng
  • 2. Ma trận 2 chiều vs. 1 chiều A[i, j] B[ max_row*i + j] C[i + max_col*j]
  • 4. Radix sort Bước 1 Bước 2 Bước 3 r a t m o p c a t m a p c a r t o p c o t t a r r a p r a t m o p c a t m a p c a r t o p c o t t a r r a p r a t m o p c a t m a p c a r t o p c o t t a r r a p r a t m o p c a t m a p c a r t o p c o t t a r r a p
  • 5.
  • 7. Giải thuật Radix sort trên DSLK Algorithm radix_sort Input: danh sách cần sắp thứ tự Output: danh sách đã sắp thứ tự //Mỗi queue chứa các phần tử có ký tự tương ứng 1. queues là một dãy có max_character hàng //Lặp k bước, kiểm tra các ký tự tại vị trí k 2. for position = size(khóa) to 0 2.1. while (danh sách còn) 2.1.1. Lấy phần tử đầu tiên 2.1.2. Tính toán thứ tự của chữ cái ở vị trí k trong khóa 2.1.3. Đẩy phần tử này vào queue tương ứng 2.2. Nối tất cả các queue lại với nhau thành danh sách End r adix_sort
  • 8. Mã C++ Radix sort trên DSLK const int max_chars = 28 ; template < class Record> void Sortable_list<Record> :: radix_sort( ) { Record data ; Queue queues[max_chars] ; for ( int position = key_size − 1 ; position >= 0 ; position−−) { // Loop from the least to the most significant position. while (remove(0 , data) == success) { int queue_number = alphabetic_order(data . key_letter(position)) ; queues[queue_number] . append(data) ; // Queue operation. } rethread(queues) ; // Reassemble the list. } }
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. Ví dụ dùng bảng Hash T U V M D O char_index: Space=0, A=1, B=2, …, Z=27 hash(x) = char_index(x) % 10 Các khóa: M, O, T, V, I, D, U I Tìm V Tìm F Không có 1 U 6 4 9 2 0 5 3 F D I V T O M 0 1 2 3 4 5 6 7 8 9
  • 14.
  • 15. Thiết kế bảng Hash dùng địa chỉ mở const int hash_size = 997 ; // a prime number of appropriate size class Hash_table { public: Hash_table( ) ; void clear( ) ; Error_code insert( const Record &new entry) ; Error_code retrieve( const Key &target , Record &found) const; private: Record table[hash_size] ; } ; Đảm bảo phép thử tuyến tính không bị lặp vòng
  • 16. Giải thuật thêm phần tử dùng bảng Hash địa chỉ mở Algorithm Hash_Insert Input: bảng Hash, mẫu tin cần thêm vào Output: bảng Hash đã có mẫu tin thêm vào 1. probe = hash(input_key) 2. increment = 1 //Dùng khi đụng độ 3. while (table[probe] không rỗng) //Có đụng độ //Dùng các phép thử (tuyến tính, bậc hai, …) 3.1. probe = (probe + increment) % hash_size 3.2. increment = increment + 2 //Thử bậc hai 4. table[probe] = new_data End Hash_insert
  • 17. Mã C++ thêm phần tử dùng bảng Hash địa chỉ mở Error_code Hash_table :: insert( const Record &new entry) { Error_code result = success ; int probe_count = 0 , increment = 1 , probe ; Key null ; probe = hash(new_entry) ; while (table[probe] != null && table[probe] != new_entry && probe_count < (hash size + 1)/2) { probe_count++ ; probe = (probe + increment)%hash_size ; increment += 2 ; } if (table[probe] == null) table[probe] = new_entry ; else if (table[probe] == new_entry) result = duplicate_error ; else result = overflow ; return result ; }
  • 18. Phương pháp nối kết (chained hash table)
  • 19.
  • 20. Thiết kế bảng Hash nối kết const int hash_size = 997 ; // a prime number of appropriate size class Hash_table { public: //Specify methods here private: List<Record> table[hash_size] ; } ;
  • 21.
  • 22.
  • 23. So sánh các phương pháp
  • 24. So sánh các phương pháp (tt.)