Изменения

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

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

878 байт добавлено, 02:22, 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-1].Top.Previous = piles[piles.size-2].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
== Пример ==

Навигация