快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

(1) 首先设定一个分界值,通过该分界值将数组分成左右两部分。

(2) 将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都 小于分界值,而右边部分中各元素都大于或等于分界值。

(3) 然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

(4) 重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。


var arr = [9, 4, 3, 1, 6, 3, 8, 7]/**
* 快速排序
* @param {array}    - arr 需要排序的数组
* @returns {array}
*/function quickSort (arr) {if (arr.length <= 1) return arrvar arr1 = [], arr2 = []for (var i = 1; i < arr.length; i++) {if (arr[i] < arr[0]) {arr1.push(arr[i])} else {arr2.push(arr[i])}}arr1 = quickSort(arr1)arr2 = quickSort(arr2)arr1.push(arr[0])return arr1.concat(arr2)
}console.log(quickSort(arr))    // [1, 3, 3, 4, 6, 7, 8, 9]

面试题库分享

1、前端面试题库                   推荐:★★★★★

地址:前端面试题库

2、前端技术导航大全             推荐:★★★★★

地址:前端技术导航大全

3、开发者颜色值转换工具             推荐:★★★★★

地址 :开发者颜色值转换工具

2、前端边框阴影在线工具         推荐:★★★★★

地址:前端边框阴影在线工具 

js快排(JavaScript快速排序算法)- 前端面试相关推荐

  1. 算法——java快排(快速排序)

    手写java快排(快速排序)代码--双边循环法,本人亲测哈哈!! package com.abc.backend.algo;import java.util.Arrays;/*** 快排(双边循环法) ...

  2. 基于单链表快排的优化算法

    快排大法好,不说日常数据处理的巨大优势,面试时能手写快排更是装X一大利器. 不过传统的快排有一大缺陷:当出现大量相同值或数据已经有序时,由于对相同值的重复递归,排序效率会急剧降低乃至O(N^2). 为 ...

  3. Java 快速排序算法实现-----面试

    思路: 首先拿到数组第一个元素作为基数,然后遍历数组,比基数小的,放在左边,比基数大的,放在数组右边. 遍历一遍之后,再对数组左边和右边分别进行同样的快速排序 代码: package com.xiny ...

  4. c语言快排过程,快速排序(快排)C语言实现

    快速排序 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:经过一趟排序将要排序的数据分割成独立的两部分,其中一部分的全部数据都比另一部分的全部数据都要小,而后再按此方法对这两部 ...

  5. 手动编写快排(快速排序),实现从小到大和从大到小排序

    快排的方法类 package com.hcc.util;public class QuickSort {/*** * @param arr 存放数据的数组* @param left 需要排序的开始下标 ...

  6. JavaScript常用算法(面试)------Sestid

    目录 (一)快速排序算法 (二)希尔排序,也称递减增量排序算法 (三)选择排序算法 (四)归并排序算法 (五)冒泡排序算法 (六)插入排序算法 (七)二分插入排序算法 (一)快速排序算法 1.1: 先 ...

  7. javascript 快速排序算法

    今天给大家介绍的是javascript中的快速排序算法. 快速排序: 1.通过数组长度,来找到数组中间的那个值(基准值) 2.分别拿数组中其他值和该值进行比较,如果小(大)于该基准值就直接添加到lef ...

  8. js java base64,JavaScript BASE64算法实现(完美解决中文乱码)

    这篇文章主要介绍了JavaScript BASE64算法实现(完美解决中文乱码),先用escape()对中文进行编码.然后再进行base64编码. 解码时,再加入()对中文进行解码,这样就可以避免中文 ...

  9. 【Python快排】快速排序优化

    # 快排 def qucksort(numlist, l, r):if l >= r : returnlow, hight = l-1, r+1mid = numlist[(l + r) // ...

最新文章

  1. python的lambda表达式是什么?什么是回调函数?
  2. jQuery——封装form表单的数据为json对象
  3. Java怎么学?一些非常有用的书单和网站推荐
  4. android小知识之意图(intent)
  5. Fluid 0.4 新版本正式发布
  6. cocos2d-x初探学习笔记(2)--重要概念及Test例子结构
  7. C语言指针这些使用技巧值得收藏!
  8. 董明珠:格力100%不会爆雷 爆雷的白马股不是真正白马股
  9. Java String转int、float、double
  10. 电脑也能管理服务器安全 安全狗服云PC端V2.3发布
  11. java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder
  12. Oracle RAC 10.2.0.5升级到11.2.0.4遇到的问题
  13. 【leetcode】1018. 可被 5 整除的二进制前缀
  14. PXC 57 二进制安装
  15. 经典的同态滤波算法的优化及其应用参数配置
  16. 串口转WIFI模块通信
  17. 燃料电池系统建模(未完待续)
  18. 一分钟教你弄懂智能电表的峰、尖、平、谷
  19. 第三章 基本粒子
  20. CF1442D Sum 分治 背包dp

热门文章

  1. c语言用递归法求杨辉三角形,关于【杨辉三角】的递归解决方法,请教。有没有大神【【高手】】...
  2. 香格里拉集团入驻天猫开设食品旗舰店;OMNI新荤主义全新发布植物海鲜系列 | 食品饮料新品...
  3. Paw for Mac v3.3.3 – API接口调试http客户端
  4. python-分段计算居民水费
  5. Pantera Capital:我们目前处于加密货币牛市早期,竞争币表现将更佳
  6. 前端请求数据GET方法
  7. 详细的Faster R-CNN源码解析之RPN源码解析
  8. 程序员,请昂起你高贵的头
  9. 相位调制器,强度调制器和IQ调制器的原理和传递函数介绍
  10. 防止无协议脱欧 工党或支持英国推迟脱欧提案