用一个栈排序另外一个栈

用一个栈排序另外一个栈,使得栈变为有序,只能使用一个辅助栈和变量,不能使用其他数据结构。

代码实现

  1. /**
  2. * 排序栈
  3. * @param {*} stack 待排序的栈
  4. * @returns 排序后的栈
  5. */
  6. function stackSort(stack) {
  7. const help = [];
  8. while (stack.length) {
  9. const cur = stack.pop();
  10. // 如果新栈为空,或者当前元素小于栈顶元素,将当前元素加入栈中
  11. if (help.length === 0 || help[help.length - 1] < cur) {
  12. help.push(cur);
  13. } else {
  14. //如果help栈顶元素大于当前元素,将help所有的大于当前元素的数据出栈存入stack中
  15. while (help[help.length - 1] > cur) {
  16. stack.push(help.pop());
  17. }
  18. help.push(cur);
  19. }
  20. }
  21. return help;
  22. }
  23. // test
  24. console.log(stackSort([2, 1, 3, 5, 4, -2]));
  25. // [ -2, 1, 2, 3, 4, 5 ]
JavaScript
编程笔记 & 随笔杂谈