Задача: Шейкер-сортировка
Псевдокод: Шейкер сортировка
  1. left = 1
  2. right = n-1
  3.  
  4. last = n-1
  5.  
  6. /* основной цикл до тех пор пока границы
  7. отсортированных с разных сторон отрезков
  8. не пересекутся */
  9. while left < right
  10. /* проход снизу вверх */
  11. for j = right downto 1
  12. if x[j-1] > x[j]
  13. swap(x, j-1, j)
  14. last = j
  15.  
  16. /* Корректируем нижнюю границу
  17. до которой уже все элементы получились
  18. отсортироваными */
  19. left = last + 1
  20.  
  21. /* проход сверху вниз */
  22. for j = 1 to right
  23. if (x[j-1] > x[j] )
  24. swap(x, j-1, j)
  25. last = j
  26.  
  27. /* Корректируем верхнюю границу
  28. после которой уже все элементы получились
  29. отсортироваными */
  30. right = last - 1
  31.