Я придумал этот код, который принимает два SORTED в списках возрастающего порядка, а затем объединяет эти два списка в один список, сохраняя восходящий порядок-или сравнение. Я пытался проанализировать его и посмотреть, какова его временная сложность. Я убежден, что в худшем случае нам придется проходить через все списки, и поскольку есть 2 списка, нам нужно иметь вложенную рекуранс, что означает время O (n^2) для случая WORST. Однако, поскольку мы сравниваем размеры каждого из двух элементов, прежде чем мы рекурсируем, я думаю, что это, вероятно, время O (log n). Поправьте меня, если я ошибаюсь. БлагодаряКакова продолжительность этого Haskell слияния кода
Вот моя рекурсия:
mergeLists::[Integer]->[Integer]->[Integer]
mergeLists [] [] =[]
mergeLists [] (y:ys) =(y:ys)
mergeLists (x:xs) [] =(x:xs)
mergeLists (x:xs) (y:ys)
|(x<y) =x:mergeLists xs (y:ys)
|otherwise =y:mergeLists (x:xs) ys
обычно определяется как лево-смещенное, то есть когда x == y, затем тянуть x, а не y: '| y> x = y: ... '. –