快速排序
来源:互联网 发布:亚马逊aws 知乎 编辑:程序博客网 时间:2024/06/10 18:22
一、定义
快速排序也是采用分而治之的算法,通过递归的方式将所有数据分解为包含较小元素和较大元素的不同子序列。不断重复直到所有数据都是有序。
二、基本思想
- 在数据集之中,选择一个元素作为”基准”(pivot)。
- 所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。
- 对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
三、图解
四、代码实现
function quickSort(arr){ if (arr.length <= 1) { return arr; } var pivot = arr[0]; var lesser = []; var greater = []; for(var i = 1;i < arr.length ; i++){ if(arr[i] < pivot){ lesser.push(arr[i]) }else{ greater.push(arr[i]) } } return quickSort(lesser).concat([pivot], quickSort(greater));}
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- activiti工作流的监听类调用spring中的been
- Vuejs v-for中利用index来对第一项添加class
- JSP内置对象的一些总结
- xcode 项目瘦身神器
- 计算最高逾期、当前逾期、累计逾期
- 快速排序
- MYSQL免安装版无法启动终极解决方法
- Java : Basic
- 使用Rxjava完成倒计时遇到的问题及处理
- yield的简单用法
- LeetCode 之 Reverse Integer
- activit会签, 多人审批, 简单使用
- 编写php自定义扩展
- vue-router没有效果的问题解决之一