Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在2n空间中对堆栈排序_Javascript_Sorting_Data Structures_Stack - Fatal编程技术网

Javascript 在2n空间中对堆栈排序

Javascript 在2n空间中对堆栈排序,javascript,sorting,data-structures,stack,Javascript,Sorting,Data Structures,Stack,我已经在Java和C中找到了这个问题的几个实现,但是我还没有找到一个使用JavaScript的例子。这是一个相当常见的技术面试问题: 在2n空间中对堆栈进行排序。(仅使用2个堆栈对堆栈进行排序)我们可以在给定堆栈和临时缓冲区的情况下实现简单的非递归冒泡排序: 迭代地从堆栈中弹出两个元素,如果第一个元素较大,则交换这两个元素,然后将它们推回到缓冲区中 重复步骤1。但是要反转方向,这样缓冲区中的所有元素都将返回堆栈 重复步骤1。二,。直到不再需要交换更多的元素 函数气泡(堆栈、缓冲区、up=tru

我已经在Java和C中找到了这个问题的几个实现,但是我还没有找到一个使用JavaScript的例子。这是一个相当常见的技术面试问题:


在2n空间中对堆栈进行排序。(仅使用2个堆栈对堆栈进行排序)

我们可以在给定堆栈和临时缓冲区的情况下实现简单的非递归冒泡排序:

  • 迭代地从堆栈中弹出两个元素,如果第一个元素较大,则交换这两个元素,然后将它们推回到缓冲区中
  • 重复步骤1。但是要反转方向,这样缓冲区中的所有元素都将返回堆栈
  • 重复步骤1。二,。直到不再需要交换更多的元素

    函数气泡(堆栈、缓冲区、up=true){
    设互换=0;
    let last=stack.pop();
    while(stack.length>0){
    让next=stack.pop();
    如果(向上?最后一次>下一次:最后一次<下一次)交换++;
    else[next,last]=[last,next];
    buffer.push(下一步);
    }
    buffer.push(最后一个);
    收益互换;
    }
    函数排序(stack,up=true,buffer=[]){
    做气泡(堆栈、缓冲区、向上);
    而(气泡(缓冲、堆叠、向上)>0);
    返回栈;
    }
    //例如:
    
    console.log(排序([6,3,9,3,2,8]);//[2,3,3,6,8,9]
    您可以添加一个示例吗?可能的重复项您可以在JS中对堆栈进行排序,因为堆栈将实现为随机访问数组,而无需额外的空间要求。。。你能澄清一下吗?如果这是一个面试问题,你只允许使用推送和弹出,那当然是另一回事了。@dalyhabit那么你的意思是你总共有3个堆栈,就像一个堆栈作为输入,我们可以使用两个额外的堆栈,对吗?