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

Chương 5: Bảng băm (Hash table)

24 702 7
Tài liệu đã được kiểm tra trùng lặp

Đ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 24
Dung lượng 1,06 MB

Nội dung

Bảng băm (Hash table) Bảng băm (Hash table) Chương 5          Nội dung Nội dung Nội dung Nội dung 10/18/13 www.lhu.edu.vn        !"#$%&' ($()" *$*+&$,-./  "&0"1""2#""34  56%&&7$ ") '8*$*"9:&7"3,;,/< ;,=$/<>/ ?@!9=+A$"$8  ")%&(1hiệu suất cao &7,B"CD*E/F   10/18/13 www.lhu.edu.vn    G34H" =+A1C"I "  34"9+&$&H" =+ABC(+0B &  5%&D""++$ "I"  56%&=;,J/   !"#$#%!!"& !'() !"#$#%!!"& !'() 10/18/13 www.lhu.edu.vn    -K# ""  + &$,*. $L&.*/"3=+A  MK # ""  "I ,*. $L +.**.*/+$  *+,   - ./ 0$1!+20+!3!4) 0 +205!1!.6 7 ! 8 !"2 !4) 0 .6 79 %#!":  %#!":  10/18/13 www.lhu.edu.vn    Bảng băm đóngK  NE34"E  OP&9B(1"I  -7: ")""$"Q<9+Q  6+R=D*E  Bảng băm mởK  NE34&7"E  O*E&9"9:"9"S"I  !9: ")""$"Q<934  56+R"9:*7"T ;2' ;2' 10/18/13 www.lhu.edu.vn    UV+&$,*E<"P>/"I<"I" +$ W0KV&9"PJ"I,*EQ/ int hashfunc( char *s, int n ) { int sum = 0; while( n-- ) sum = sum + *s++; return sum % 256; }  50"I"2&$XMYK<# =9>?  50"I"2&$XMYK<# =9>? 5'+20@2 -.6 7A'.B.1 2''2 <# !'2 <# !'2 C'0!"6+20 Hàm băm 6 7? 7B 10/18/13 www.lhu.edu.vn    5Q"Z  50$[  !"&$H"E'+$[  \+[ <# !'2 <# !'2 10/18/13 www.lhu.edu.vn    ]C+  ]S"  ]S ;)0)$& ;)0)$& 10/18/13 www.lhu.edu.vn    ]C+ ;)0)$& ;)0)$& Khoá Địa chỉ Khóa Địa chỉ Khóa Địa chỉ Khóa Địa chỉ a 0 h 7 o 14 v 21 b 1 i 8 p 15 w 22 c 2 j 9 q 16 x 23 d 3 k 10 r 17 y 24 e 4 l 11 s 18 z 25 f 5 m 12 t 19 / / g 6 n 13 u 20 / / 10/18/13 www.lhu.edu.vn    -))0) '  N4*E"28":="IK h,k/?k$m k=&$<m=&0"1",*E"I/"2[  (R'"^+m  _"^?`  <,&/?&$`  *aS*R "2&:="I  _"^?Jb  <,&/?&$Jb  *aS*E"E "2&:="I Q"^m=QE3(1`  $c"Jb  ;)0)$& ;)0)$& [...]... www.lhu.edu.vn Chương 5 Bảng băm Cài đặt bảng băm phương pháp nối kết  Phép toán kiểm tra bảng băm rỗng isempty: int isempty( ) { int b; for (b=0;bnext; } } 10/18/13 www.lhu.edu.vn Chương 5 Bảng băm Cài đặt bảng băm phương... cho bảng địa chỉ có khoảng 100 mục, chọn hằng số A=0.61803 Tính địa chỉ cho khóa 325 h(325) = floor(100 (325*0.61803 mod 1))=86 M=100, A=0.61803 M=100, A=0.52173 Khoá Khoá Địa chỉ 325 86 325 56 125 25 125 21 147 10/18/13 Địa chỉ 85 147 69 www.lhu.edu.vn Chương 5 Bảng băm Các thao tác trên bảng băm         10/18/13 Khởi tạo (Initialize) Kiểm tra rỗng (Empty) Lấy kích thước của bảng băm. .. có khóa k trong bảng băm void remove(int k) { int b; nodeptr q, p; b = hashfunc(k); p = bucket[b]; while(p!=NULL && p->key !=k) { q=p; p=p->next; } if (p == NULL) printf("\n khong co nut co khoa %d" ,k); else if (p==bucket[b]) pop(b); else delafter(q); //xoa nut } 10/18/13 www.lhu.edu.vn Chương 5 Bảng băm Cài đặt bảng băm phương pháp nối kết  Phép toán xóa bucket trong bảng băm void clearbucket.. .Chương 5 Bảng băm Phương pháp xây dựng hàm băm  Ví dụ: Ta có tập khoá là các giá trị số gồm 3 chữ số, và vùng nhớ cho bảng địa chỉ có khoảng 100 mục, như vậy ta sẽ lấy hai số cuối của khoá để làm địa chỉ theo phép chia dư cho 100 Vd: 325 Mod 100 = 25, 125 Mod 100=25 M=100 M=97 (nguyên tố) Khoá Khoá Địa chỉ 325 25 325 34 125 25 125 28 147 10/18/13 Địa chỉ 47 147 50 www.lhu.edu.vn Chương. .. p->next; } } 10/18/13 www.lhu.edu.vn Chương 5 Bảng băm Cài đặt bảng băm phương pháp nối kết  Phép toán duyệt toàn bộ bảng băm: void traverse( ) { int b; for(b=0;b . Bảng băm (Hash table) Bảng băm (Hash table) Chương 5     .  10/18/13 www.lhu.edu.vn    Bảng băm đóngK  NE34"E  OP&9B(1"I

Ngày đăng: 18/10/2013, 09:15

TỪ KHÓA LIÊN QUAN

w