1. function quicksort(arr){
  2.   function q(start,end){
  3.     if(start>=end){return;}
  4.     var pivot = start,
  5.     temp = arr[pivot],
  6.     i = start+1;
  7.     for(;i<=end;i++){
  8.       if(arr[i]<temp){
  9.         var s = arr.splice(i,1)[0];
  10.         arr.splice(start,0,s);
  11.         pivot++;
  12.       }
  13.     }
  14.     q(start,pivot-1);
  15.     q(pivot+1,end);
  16.   }
  17.   q(0,arr.length);
  18.   return arr;
  19. }
  20. var arrs = [9,45,45,90,3,77,4,90];
  21. var c = quicksort(arrs);
  22. console.log(c);

第3行的if(start>=end){return;},以这样的方式退出递归,我是这么考虑的。

当子数组中剩两项时,分两种情况分析:

(1)当子数组第一项(传递给参数start)比第二项(传递给参数end)小

  在函数q中先做了一遍调整,最后变量start指向第一项,变量pivot指向第一项,然后是:

  q(start,pivot-1);//此时start==pivot,故start>pivot-1,通过if(start>=end){return;}退出递归

  q(pivot+1,end);//此时pivot+1==end,同理退出递归

(2)当第一项比第二项大

  在函数q中做一遍调整,最后变量start指向第一项,变量pivot指向第二项,然后:

  q(start,pivot-1);//此时start==pivot-1,退出递归

  q(pivot+1,end);//此时pivot+1>end;也退出递归

转载于:https://www.cnblogs.com/followBlade/p/4058301.html

快速排序算法javascript实现相关推荐

  1. JavaScript实现QuickSort快速排序算法(附完整源码)

    JavaScript实现QuickSort快速排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 QuickSort .js完整源代码 Comparator.js完 ...

  2. javascript 快速排序算法

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

  3. js快排(JavaScript快速排序算法)- 前端面试

    快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1) 首先设定一个分界值,通过该分界值将数组分成左右两部分. (2) 将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的 ...

  4. 资料分享:送你一本《数据结构与算法JavaScript描述》电子书!

    数据结构 是掌握计算机编程必须具备的技能.通常情况下,我想掌握一门编程语言所用的方法就是利用这门语言把数据结构中线性表.栈.队列.字符串.动态数字.整数集合.树.图.搜索.排序等涉及的算法全部写一遍. ...

  5. 快速排序算法的优化思路总结

    写于2016年1月11日,如有错漏,欢迎斧正. 原文 前两天在知乎上看到了一个关于快速排序算法性能的问题,我简单总结了一个优化思路,现在在自己的博客里也贴一下吧,版权都是我的. 其实里面的大部分内容在 ...

  6. 用openAI写个js的排序算法(快速排序算法)

    文章目录 一.生成JS快速排序算法 二.openai还会给出调用方法 一.生成JS快速排序算法 这是一个通用的 JavaScript 排序算法.它使用的是快速排序算法. function sort(a ...

  7. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  8. 快速排序算法实现思想个人理解

    一.概述 快速排序是冒泡排序的改进算法.它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面, ...

  9. 快速排序算法(基于Java实现)

    title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...

最新文章

  1. 我的世界java有三叉戟杀手吗_我的世界-三叉戟竟能这么用 这样得怪物头颅长见识了!...
  2. SQL Server 日志传送[转载]
  3. java开发简介_Java Web开发介绍
  4. 检测到基于堆栈的缓冲区溢出_检测到堆栈粉碎
  5. ruhr启动mysql数据库_Mysql表类型(存储引擎)的选择
  6. oracle -239报错,解决: ./check_oracle_health --connect orcl --mode connection-time 报错的问题...
  7. java大神请出来_求java大神,请分析以下代码,写出执行结果,并解释每行结果输出的原因。...
  8. 单位几个小伙子,又因为微服务的事吵的不可开交
  9. java 配置文件的路径_详解java配置文件的路径问题
  10. TensorFlow 学习(十一)—— 正则(regularizer)
  11. 用关键字搜索c语言,c语言-以关键字搜索程序
  12. 12满秩分解与奇异值分解(2)
  13. python自制网课答案查找器
  14. Android 软键盘的那些坑,原理篇来了!
  15. “省份、城市、区县” 三级联动数据
  16. ARM的商业模式和ARM各种版本号区分
  17. Python爬虫初学一(爬虫基础)
  18. Android基础之RemoteViews
  19. 理论总结-三次样条插值
  20. gcc/g++ 编译C/C++代码

热门文章

  1. markword用于标记锁的位数
  2. Hadoop大数据分布式文件系统hdfs的工作机制
  3. Element-UI分页组件使用——点第几页查第几页
  4. String的concat方法与join方法
  5. 用计算机控制人造卫星和导弹的发射属于,2008年6月全国高校计算机等级考试(广西考区)一级笔试试题卷...
  6. Java传值与传引用
  7. oracle index contention,Index Contention等待
  8. python基础语法手册_说一说python中的几个基础语法
  9. 200设备管理器找不到蓝牙_达尔优LK200蓝牙键盘,一键切换+支持三台设备+百元不到...
  10. 自走棋电脑版_巨鸟公布自走棋正版自研手游:龙渊发行