Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Готовые лабораторные работы / 2 / 218
.hs --2.18. Сортировка. Описать алгоритм сортировки списка методом прямой вставки. Порядок сортировки задаётся функцией типа f :: a -> a -> bool, возвращающей true, если элементы находятся в правильном порядке..
--Сложность n^2
f217 [] _ = []
f217 xs f = let a = (f217_1 xs f 1 0 (nth 0 xs))
in (nth a xs):(f217 (del a xs) f)
-- поиск индекса левого элемента в списке
-- сложность n
f217_1 [] _ _ min _ = min-1
f217_1 (x:xs) f i min val = if (f val x) then
f217_1 xs f (i+1) min val
else
f217_1 xs f (i+1) i x
-- пример функции
f a b = a < b
-- Удалить элемент - слоность n
del i [] = []
del 0 (x: xs) = xs
del i (x: xs) = x:(del (i-1) xs)
-- Получить элемент - сложнть n
nth i [] = error "range error"
nth 0 (x:xs) = x
nth i (x:xs) = nth (i-1) xs
--Сложность n^2
f217 [] _ = []
f217 xs f = let a = (f217_1 xs f 1 0 (nth 0 xs))
in (nth a xs):(f217 (del a xs) f)
-- поиск индекса левого элемента в списке
-- сложность n
f217_1 [] _ _ min _ = min-1
f217_1 (x:xs) f i min val = if (f val x) then
f217_1 xs f (i+1) min val
else
f217_1 xs f (i+1) i x
-- пример функции
f a b = a < b
-- Удалить элемент - слоность n
del i [] = []
del 0 (x: xs) = xs
del i (x: xs) = x:(del (i-1) xs)
-- Получить элемент - сложнть n
nth i [] = error "range error"
nth 0 (x:xs) = x
nth i (x:xs) = nth (i-1) xs
Соседние файлы в папке 2