<math>\mathrm{sum}</math> = 0
sort(<math>\mathrm{a}</math>) ''//сортируем массив по возрастанию''
do for <math>\mathrm{i}</math> = 1..<math>\mathrm{n}</math> find(<math>\mathrm{min1}</math>,<math>\mathrm{min2}</math>) ''//отыскиваем индексы двух минимальных элементов массива swap(<math>\mathrm{a}</math>[1],<math>\mathrm{a}</math>[min1]) swap(<math>\mathrm{a}</math>[2],<math>\mathrm{a}</math>[min2]) ''//теперь первые два элемента массива минимальные'' <math>\mathrm{a}</math>[2] = <math>\mathrm{a}</math>[1] + <math>\mathrm{a}</math>[2] <math>\mathrm{sum}</math> +=+ <math>\mathrm{a}</math>[2] <math>\mathrm{n}</math>-- delete(<math>\mathrm{a}</math>[1]) ''//убираем из массива ненужный элемент и больше его не рассматриваем'' while <math>\mathrm{n}</math> != 1 ''//пока не останется одна частота в массиве''
'''return''' <math>\mathrm{sum}</math>