JS快速排序
来源:互联网 发布:java程序员个人简历 编辑:程序博客网 时间:2024/06/05 20:32
最近在看了点算法,下面是用JS写的最常用的快速排序。综合了网上很多例子,我觉得下面这个针对于快速排序的特点而言是最好的,之后有一个阮一峰写的,看起来简单易懂,但是我觉得他这种写法已经完全没有了快速排序原址排序的特点。
DEMO1
脱胎于百度百科,自己理解后简单化下分享给大家。
/** * Created by ZH-PC on 2016/10/3. */var arr=[66,13,51,76,81,26,57,69,23];function quickSort(arr) { function innerSort(start,last){ var i=start; var j=last-1; var pivot=arr[start]; if(last>start){ while(i<j) { for (; j > i; j--) { if (pivot > arr[j]) { arr[i] = arr[j]; i+=1; break; } } for (; i < j; i++) { if (pivot < arr[i]) { arr[j] = arr[i]; j-=1; break; } } } arr[i]=pivot; innerSort(0,i); innerSort(i+1,last); } } innerSort(0,arr.length); return arr;}console.log(quickSort(arr));
阮一峰——
原文地址:http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
“`
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
我个人觉得,阮一峰写的是有点问题的,首先,新创建的left、right数组已经脱离了快速排序原址排序的特点;其次,极端的试想下,如果待排序的数组A.length->+∞,那么多次的递归需要划分多大的空间来储存新的left[],right[]?
大家有什么想法分享一下,一起进步吖~
- JS实现快速排序
- js 快速排序
- js实现快速排序
- JS实现快速排序
- js快速排序
- js快速排序
- JS实现快速排序
- js 快速排序
- js实现快速排序
- js写快速排序
- JS快速排序
- JS 实现快速排序
- js快速排序
- js中的快速排序
- JS实现快速排序
- JS快速排序
- JS实现快速排序
- js中的快速排序
- 关于LayoutInflate和View-infalte的参数意义以及区别总结
- Hdu 4333 Revolving Digits 扩展KMP
- struts2多文件上传
- JAG Practice Contest for ACM-ICPC Asia Regional 2016 C题【贪心】
- JAVA-集合工具类
- JS快速排序
- 建立一个5行5列的矩阵,找出其中最小的元素,输出该值及行、列号。
- Medium 215题 Kth Largest Element in an Array
- HDU 1150 Machine Schedule 最小顶点覆盖
- 2016四川省赛A,C【写了1w个if的水题】
- Webmagic 获取数据初探访1
- 集合及concurrent并发包总结
- UML活动图概要
- JAVA-增强for循环