Реализации алгоритмов/Сортировка/Поразрядная: различия между версиями

Содержимое удалено Содержимое добавлено
м Снятие {{К переименованию}} и добавление {{BookCat}}; избыточные <big /> и <font /> вокруг <source />; ссылки; пробелы.
LUA, из википедии - https://ru.wikipedia.org/w/index.php?title=%D0%9F%D0%BE%D1%80%D0%B0%D0%B7%D1%80%D1%8F%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0&diff=98577905&oldid=98560693
Строка 177:
</source>
 
== Lua ==
<syntaxhighlight lang="lua">
local function list_to_buckets(array, base, iteration)
local buckets = {}
for i=1,base do
buckets[i]={}
end
for _, number in pairs(array) do
-- определение значения текущего разряда числа
local digit = math.floor((number / math.pow(base, iteration))) % base+1
-- добавить число в контейнер с такими же значениями разряда
table.insert(buckets[digit],number)
end
return buckets
end
 
local function buckets_to_list(buckets)
local numbers = {}
-- добавление в возвращаемый массив из каждого разряда ...
for _, bucket in pairs(buckets) do
-- ... каждого числа
for _, number in pairs(bucket) do
table.insert(numbers,number)
end
end
return numbers
end
 
function max(array)
local m=array[1]
for i=2,#array do
if array[i]>m then
m=array[i]
end
end
return m
end
 
function radix_sort(array, base)
local base=base or 10
local maxval = max(array)
local it = 0
while math.pow(base, it) <= maxval do
array = buckets_to_list(list_to_buckets(array, base, it))
it = it + 1
end
return array
end
</syntaxhighlight>
 
{{BookCat | filing = deep}}