JavaScript实现快速排序

快速排序是各大IT公司面试必考算法题之一,正好在百度前端技术学院(IFE)做任务时遇到一道题,要求可视化一个排序算法的计算过程,我第一时间就想到了用JS手写一个快排算法,正好作为练手。

// 快速排序
function quickSort(array,low,high) {if (high <= low) return;// 选择第一个元素作为基准元素var pivot = array[low], i=low,j=high;// 将所有比pivot小的元素放到其左边,大的放到右边while (i < j) {while (i < j && array[j] > pivot) --j;array[i] = array[j];while (i < j && array[i] <= pivot) ++i;array[j] = array[i];}array[i] = pivot;// 递归对左右两边的子数组排序arguments.callee(array,low,i-1);arguments.callee(array,i+1,high);
}

这个排序算法思路很简单,但有一点细节要注意:中间那两个判断i、j移动的条件里,与pivot作比较时,至少要有一个>=(或<=)符号,否则,当待排序数组里有两个相同的元素时,两个while会卡在那里互相赋值,造成无限循环。

转载于:https://www.cnblogs.com/leegent/p/5322391.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js函数节流

我们知道&#xff0c;js有些事件例如resize&#xff0c;mousemove等是会不间断触发的&#xff0c;例如我们简单的一个scroll事件&#xff1a; function scrollFn(){console.log(1) } window.onscrollscrollFn 我们需要在滚动的时候去做一些事情&#xff0c;如上图可见&#…

前端学习(1841):前端面试题之redux管理状态机制

对Redux基本理解 redux是一个独立专门用于做状态管理的JS库, 不是react插件库它可以用在react, angular, vue等项目中, 但基本与react配合使用作用: 集中式管理react应用中多个组件共享的状态和从后台获取的数据 Redux的工作原理Redux使用扩展 使用react-redux简化redux的编码使…

@DateTimeFormat 和 @JsonFormat 注解

https://blog.csdn.net/zhou520yue520/article/details/81348926

结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)

一、题目及题目要求 题目:返回一个整数数组中最大子数组的和。要求&#xff1a;&#xff08;1&#xff09;输入一个整形数组&#xff0c;数组里有正数也有负数。&#xff08;2&#xff09;数组中连续的一个或多个整数组成一个子数组&#xff0c;每个子数组都有一个和。&#xf…

如何获得select被选中option的value和text

https://blog.csdn.net/zgrkaka/article/details/83382278

JS——阶乘的三种做法(正向逆向递归)

一、正向求阶乘 function factorial(n) {var product 1, i 2;while (i < n) {product * i;}return product;}alert(factorial(4)); 二、逆向求阶乘 function factorial(n) {var product 1;while (n > 1) {product * n;n--;}return product;}alert(factorial(4)); 三、…

ElasticSearch 6.x 学习笔记:12.字段类型

https://blog.csdn.net/chengyuqiang/article/details/79048800

同意按钮,倒计时10秒,同意按钮变为可提交的

HTML代码&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <html xmlns"http://www.w3.org/1999/xhtml">3 <head>4 <meta h…

前端学习(1850)vue之电商管理系统电商系统vue脚手架安装

1. 先下载node.js&#xff0c;下载地址&#xff1a;https://nodejs.org/en/download/ 找个目录保存&#xff0c;解压下载的文件&#xff0c;然后配置环境变量&#xff0c;将下面的路径配置到环境变量中。 安装node 配置进环境变量 检查是否安装完成 2. npm配置 查看npm配置信息…

使用jquery获取url及url参数的方法及定义JQuery扩展方法

1、jquery获取url很简单&#xff0c;代码如下&#xff1a; window.location.href; 其实只是用到了javascript的基础的window对象&#xff0c;并没有用jquery的知识。 2、jquery获取url参数比较复杂&#xff0c;要用到正则表达式&#xff0c;所以学好javascript正则式多么重要的…

前端学习(1851)vue之电商管理系统电商系统vue创建项目

1输入命令vue-ui 2点击创建 3初始化 4手动配置项目 点击创建项目 创建完成 安装插件 点击安装即可 配置插件 点击依赖 安装依赖

在Google Maps 上点击标签后显示说明

JS如下&#xff1a; (function() { window.onload function() { // Creating an object literal containing the properties // you want to pass to the map var options { zoom: 3, center: new google.maps.LatLng(37.09, -95.71), mapTypeId: google.maps.MapTypeId.RO…

static class 静态类(Java)

https://www.cnblogs.com/KingIceMou/p/7823918.html