Изменения

Перейти к: навигация, поиск

Терпеливая сортировка

16 байт добавлено, 02:31, 7 июня 2014
Псевдокод
== Псевдокод ==
//формирование стопок  List<Stack<E>> piles '''for''' (i = 0..n-1)
Stack<E> pile = Pile(source[i])
i = BinarySearch(piles, pile)
'''if''' (i==piles.size)
piles.Add(pile)
'''else'''
piles[i].Add(Pile(source[i]))
piles[piles.size-1i].Top.Previous () = piles[piles.sizei -21].Top // для последующего получения НВП
//Получение отсортированного массива
 
bool comparePiles (Stack<E> x, Stack<E> y)
return x.Peek()<y.Peek() 
PriorityQueue<Stack<E>> q(piles, comparePiles)
  '''for'''(i=0..n-1) answer[i]=q.Min().Pop()
//Получение наибольшей возрастающей подпоследовательности
  answer[n-1]=piles[piles.size-1].Top E prev = answer[n-1].Previous() '''for'''(i=n-2..0)
answer[i]=prev
prev = answer[i].Previous()
== Пример ==

Навигация