Изменения

Перейти к: навигация, поиск
Построение кода Хаффмана
<math>\mathrm{Q}</math>.insert(<math>\mathrm{f}</math>[<math>\mathrm{i}</math>],<math>\mathrm{c}</math>[<math>\mathrm{i}</math>])
'''for''' <math>\mathrm{i}</math> = 1 '''to''' <math>\mathrm{n}</math> - 1
(<math>\mathrm{fmin1}</math>[<math>\mathrm{x}</math>],<math>\mathrm{x}</math>) = <math>\mathrm{Q}</math>.extract_min()
<math>\mathrm{z}</math>.left = <math>\mathrm{x}</math>
(<math>\mathrm{fmin2}</math>[<math>\mathrm{y}</math>],<math>\mathrm{y}</math>) = <math>\mathrm{Q}</math>.extract_min()
<math>\mathrm{z}</math>.right = <math>\mathrm{y}</math>
(<math>\mathrm{fsum}</math>[<math>\mathrm{z}</math>],<math>\mathrm{z}</math>) = (<math>\mathrm{f}</math>[<math>\mathrm{xmin1}</math>] + <math>\mathrm{f}</math>[<math>\mathrm{ymin2}</math>],<math>\mathrm{x}</math><math>\mathrm{y}</math>) <math>\mathrm{Q}</math>.insert(<math>\mathrm{f}</math>[<math>\mathrm{zsum}</math>],<math>\mathrm{z}</math>)
'''return''' <math>\mathrm{z}</math>
Алгоритм работает за <tex> {O(n\log{n}}) </tex> для алфавита из <math>\mathrm{n}</math> символов.
Анонимный участник

Навигация