博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构和算法之栈排序
阅读量:4984 次
发布时间:2019-06-12

本文共 771 字,大约阅读时间需要 2 分钟。

题目:两组数,左边为已升序排列称为S,右边的未排序称为R,在空间复杂度为O(1)的情况下将所有数排序

思路:两组数为两个栈,S是可以为空的。循环以下基本操作,直到R为空:

     弹出R的栈顶,用变量T保存,由于S为升序排列,所以栈顶为最大,那么只要S的

     栈顶比T大就将S的栈顶弹出并推进R,直到S的栈顶比T小,此时将T推入S

代码(JS版):

1 function stackInsertSort(R) { 2     var S = []; 3     while(R.length){ 4         var T = R.pop(); 5         while(S.length && S[S.length-1] > T){ 6             R.push(S.pop()) 7         } 8         S.push(T); 9     }10     return S11 }12 13 var n = 1000;14 var R = [];15 for (var i = 0; i < n; i++) {16     R.push(Math.floor(Math.random()*10000))17 }18 19 console.log(R)20 var t1 = Date.now()21 var s = stackInsertSort(R)22 console.log("time:----------")23 console.log(Date.now() - t1)24 console.log("----------")25 console.log(s)

 

延伸: 直方图最大面积问题

 

转载于:https://www.cnblogs.com/tc6666/p/9791070.html

你可能感兴趣的文章
使UltraEdit支持Verilog hdl语言
查看>>
一个监听事件监听多个按钮
查看>>
调用其他类的方法
查看>>
SQlite数据库
查看>>
token防止表单重复提交
查看>>
前端开发要注意的浏览器兼容性问题整理
查看>>
Python服务器开发 -- 网络基础
查看>>
开源项目Html Agility Pack实现快速解析Html
查看>>
一些常用的js,jquerry 样例
查看>>
Oracle PL/SQL 多重选择句
查看>>
dorado中的creationType选择类型
查看>>
C++11 数值类型和字符串的相互转换
查看>>
无锡盈达聚力科技有限公司
查看>>
349. Intersection of Two Arrays java solutions
查看>>
1. 考虑使用静态工厂方法替代构造方法
查看>>
windows server常用命令
查看>>
python模块整理6-tarfile模块
查看>>
POJ2955Brackets——dp
查看>>
tyvj1659中中救援队
查看>>
Gym 101510C-Computer Science
查看>>