Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
28.06.2014
Размер:
978 б
Скачать
--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
Соседние файлы в папке 2