使用JS实现快速排序
大致分三步:
1、找基准(一般是以中间项为基准)
2、遍历数组,小于基准的放在left,大于基准的放在right
3、递归
- function quickSort(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=[];
- //比基准小的放在left,比基准大的放在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));
- }
使用JS实现快速排序的更多相关文章
- JS实现快速排序,冒泡排序
JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b, ...
- js算法-快速排序(Quicksort)
快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出.在平均状况下,排序n个项目要O(nLogn)次比 ...
- js实现快速排序(in-place)简述
快速排序,又称划分交换排序.以分治法为策略实现的快速排序算法. 本文主要要谈的是利用javascript实现in-place思想的快速排序 分治法: 在计算机科学中,分治法是建基于多项分支递归的一种很 ...
- JS排序--快速排序
用 JavaScript 实现快速排序代码如下: /* * @author liphong * @data 2019/02/24 */ var arr = []; // 需要被排序数组 /* * 分离 ...
- 用JS实现快速排序
"快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,选择一个元素作为"基准"(pivot). (2)所有小于"基准"的元 ...
- js数组快速排序/去重
数组的排序 快速排序 思路: (1)在数据集之中,选择一个元素作为”基准”(pivot). (2)所有小于”基准”的元素,都移到”基准”的左边:所有大于”基准”的元素,都移到”基准”的右边. (3) ...
- js数组快速排序和冒泡排序
1.快速排序 var arr = [1, 2, 5, 6, 3, 1, 4]; function mySort(arr) { if (arr.length <= 1) { return arr; ...
- js实现快速排序
非原创: var quickSort = function(arr){ if(arr.length<=1){return arr;} var pivotIndex = Math.floor(ar ...
- js数组快速排序
<script type="text/javascript"> var arr = [1, 2, 3, 54, 22, 1, 2, 3]; function quick ...
- JS实现快速排序算法
以下贴出两种实现方式,结果一样,但有些许的差别: 第一种: <script type="text/javascript"> var arr=[6,7,8,3,4,5,9 ...
随机推荐
- sysprep
今天做虚拟机模板,以及克隆.单纯的克隆会造成很多冲突问题的产生,所以在这里,windows自带的sysprep功能很好的解决了这一点. 路径位于:C:\Windows\System32\Sysprep ...
- Centos安装mysql5.6.33
下载安装包 百度网盘地址: 链接:https://pan.baidu.com/s/15xaHIqvjggS_rFP_jL-BVA 提取码:mh48 上传到服务器 mkdir mysql #在/us ...
- Java常见的开源数据连接池有哪些,并对参数做出简单的说明
(1)DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP. (2)c3p0 c3p ...
- ueditor 加载文本
一. 定义一个隐藏区域,然后用js获取 // 定义 文本框 <script id="editor" type="text/plain" style=&qu ...
- python制作坦克对战
创建子弹类 import pygame class Bullet(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__i ...
- leetcode-163周赛-1261-在污染的二叉树中查找元素
题目描述: 方法一: class FindElements: def __init__(self, root: TreeNode): self.d = set() def f(r, x): if r: ...
- ueditor不能上传mp4格式的视频--解决方案
1.ueditor.all.js 去掉所有的 type="application/x-shockwave-flash" 2.ueditor.all.min.js 去掉所有的 typ ...
- php开发面试题---游戏面向对象设计与分析实例
php开发面试题---游戏面向对象设计与分析实例 一.总结 一句话总结: 不要光空想,多看几个实例就知道自己的游戏该怎么设计了 根据实例去理解面向对象编程的的六大原则 1.英雄种类分别有:战士.法师. ...
- (4)centos7 基础命令
1.显示文件列表 ls 显示当前目录下所有非隐藏的文件夹名称 -a #显示路径下所有文件及目录 (包括以.开头的隐藏文件) -l #除文件名称外,亦将文件型态.权限.拥有者.文件大小等资讯详细列出(不 ...
- elasticsearch中TermQuery查不到数据问题
在java rest client中调用elasticsearch中的数据,精准匹配的termQuery查不到数据,这个问题是java rest client客户端自带的bug,换用matchPhra ...