Изменения

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

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

197 байт добавлено, 19:15, 7 июня 2014
Псевдокод
//формирование стопок
List<Stack<E>> createPiles() List<Stack<E>> piles '''for''' (i = 0..n - 1) Stack<E> pile = Pile(source[i]) i = BinarySearchbinarySearch(piles, pile) '''if''' (i == piles.size) piles.Addadd(pile) '''else''' piles[i].Addadd(Pile(source[i])) piles[i].Toptop().Previousprevious() = piles[i - 1].Top top() // для последующего получения НВП return piles
//Получение отсортированного массива
bool comparePiles (Stack<E> x, Stack<E> y)
return x.Peekpeek() < y.Peekpeek() PriorityQueuepriorityQueue<Stack<E>> q(piles, comparePiles) E[] getSortedArray(priorityQueue<Stack<E>> q) '''for''' (i = 0..n - 1) answer[i] = q.Minmin().Poppop() return answer
//Получение наибольшей возрастающей подпоследовательности
answerE [] getLIS(List<Stack<E>> piles) lis[n - 1] = piles[piles.size - 1].Toptop() E prev = answerlis[n - 1].Previousprevious() '''for''' (i = n - 2..0) answer lis[i]=prev prev = answerlis[i].Previousprevious()
== Пример ==

Навигация