Javascript中的常见排序算法

2019-06-03 00:49:21王振洲

 </td> 
 <td width="150" align="center"> 
 随机数个数<input id="txtCount" value="500" style="width:50px" /><br /><br /> 
 最大随机数<input id="txtMax" value="1000" style="width:50px" /><br /><br /> 
 <button onclick="generate()">重新生成</button><br /><br /><br /><br /> 
 耗时(毫秒):<label id="lblTime"></label><br /><br /><br /><br /> 
 <button onclick="demo('bubble');">冒泡排序</button><br /><br /> 
 <button onclick="demo('selection');">选择排序</button><br /><br /> 
 <button onclick="demo('insertion');">插入排序</button><br /><br /> 
 <button onclick="demo('shell');">谢尔排序</button><br /><br /> 
 <button onclick="demo('quick');">快速排序(递归)</button><br /><br /> 
 <button onclick="demo('stackQuick');">快速排序(堆栈)</button><br /><br /> 
 <button onclick="demo('merge');">归并排序</button><br /><br /> 
 <button onclick="demo('heap');">堆排序</button><br /><br /> 
 </td> 
 <td align="left"> 
 <textarea id="txtOutput" style="width:120px;height:500px;" readonly></textarea> 
 </td> 
</tr> 
</table> 
</body> 
</html> 

快速排序, 插入排序, 希尔排序, 冒泡排序, quickSort, insertSort, shellSort, bubbleSort, javascript排序
说明
写这个主要是为了锻炼自己,并无实际意义。
每个浏览器测试得出的数据会不一样。比如我用chrome 测试 一般快速排序都会最快,IE 则根据数组长度有可能希尔最快。
不要用太大数据去测试冒泡排序(浏览器崩溃了我不管)
如果有兴趣可以 下载测试页面

个人理解

冒泡排序:最简单,也最慢,貌似长度小于7最优
插入排序: 比冒泡快,比快速排序和希尔排序慢,较小数据有优势
快速排序:这是一个非常快的排序方式,V8的sort方法就使用快速排序和插入排序的结合
希尔排序:在非chrome下数组长度小于1000,希尔排序比快速更快
系统方法:在forfox下系统的这个方法非常快

算法源码

// ---------- 一些排序算法
// js 利用sort进行排序
systemSort:function(array){