排序之快速排序
来源:互联网 发布:c语言工资计算系统 编辑:程序博客网 时间:2024/06/03 20:49
http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
排序思想:
整个排序过程只需要三步:
(1)在数据集之中,选择一个元素作为”基准”(pivot)。
(2)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。
(3)对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
var quickSort = function(arr) { //判断数组的长度如果小于等于1,则返回数组 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));};
//上面这种排序存在以下问题:
每次调用函数每排序一次都要新建两个一左一右的数组,那一个非常大的数组,递归非常多次,那要消耗多少内存
阅读全文
0 0
- 排序之快速排序
- 排序之 快速排序
- 排序之快速排序
- 排序之------快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之-----快速排序
- 排序之快速排序
- 排序之快速排序
- 排序之快速排序
- Windows10安装tensorflow1.2.1版本遇到的No module named '_pywrap_tensorflow_internal'错误
- 利用System.arraycopy代替for循环实现数组复制
- 2.0版 CodeVS1099 字串变换 题解
- opengles透视矩阵投影原理
- bootstrap基础布局
- 排序之快速排序
- 接收多个参数
- Android实战——ShareSDk的使用,实现一键分享微信好友、朋友圈、QQ
- 在一个物体上如何调用另一个物体上的脚本
- CQBZOJ 避开怪兽
- C++里的单体类实现
- C++ 静态链接库与动态链接库
- nexus的安装和数据迁移
- react-router使用总结