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;也退出递归

快速排序算法javascript实现的更多相关文章

  1. 【前端也要学点算法】快速排序的JavaScript实现

    作为算法目录下的第一篇博文,快速排序那是再合适不过了.作为最基本最经典的算法之一,我觉得每个程序员都应该熟悉并且掌握它,而不是只会调用库函数,知其然而不知其所以然. 排序算法有10种左右(或许更多), ...

  2. 《数据结构与算法JavaScript描述》

    <数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...

  3. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

  4. 数据结构与算法javascript描述

    <数据结构与算法javascript描述>--数组篇 导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScri ...

  5. 数据结构与算法JavaScript (一) 栈

    序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...

  6. 快速排序算法 java 实现

    快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...

  7. C# 集合扩展快速排序算法

    /// <summary> /// 对集合进行排序,如 /// List<Person> users=new List<Person>(){.......} /// ...

  8. PHP描述冒泡排序和快速排序算法

    使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...

  9. 快速排序算法(Java)

    快速排序算法的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. class Parti ...

随机推荐

  1. sae中thinkphp使用smarty

    因为最近在学thinkphp跟着做一个小商城. 没有使用thinkphp自带的think引擎,使用的是smarty引擎. 在sea中使用的时候出现了问题.已经是前几天的事了,问题图片没保存下来. 在网 ...

  2. xdebug.var_display_max_data

    Xdebug Display Full Details on var_dump() Xdebug is an excellent addition to a PHP developers arsena ...

  3. Angular - - $interpolate 和 $parse

    $interpolate 将一个字符串编译成一个插值函数.HTML编译服务使用这个服务完成数据绑定. 使用:$interpolate(text,[mustHaveExpression],[truste ...

  4. Cracking the code interview

    推荐一本书<Cracking the code interview> Now in the 5th edition, Cracking the Coding Interview gives ...

  5. hadoop-1.x的运行实例

    我的环境是hadoop-0.20.2,eclipse:SDK-3.3.2, 源数据为: Apr 23 11:49:54 hostapd: wlan0: STA 14:7d:c5:9e:fb:84 Ap ...

  6. HTML5 新元素、HTML5 Canvas

    HTML5 新元素 自1999年以后HTML 4.01 已经改变了很多,今天,在HTML 4.01中的几个已经被废弃,这些元素在HTML5中已经被删除或重新定义. 为了更好地处理今天的互联网应用,HT ...

  7. MIPS 跳转指令BAL vs JAL

    今天调试程序,发现在windows和Linux下,diab编译的结果不一样,一个能跑一个不能跑.最后定位到了函数跳转上. 程序代码里的函数跳转写的是BAL,在windows下编译结果正常,在Linux ...

  8. POJ3254(入门状态压缩dp)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13203   Accepted: 6921 Desc ...

  9. xshell无法连接到linux主机原因分析

    xshell连接linux主机时,会出现错误:Could not connect to '192.168.89.144' (port 22): Connection failed.  但是这时能pin ...

  10. c# 应用NPOI 获取Excel中的图片,保存至本地的算法

    要求:读取excel中的图片,保存到指定路径 思路:  利用NPOI中 GetAllPictures()方法获取图片信息 步骤: 1.新建一个Windows窗体应用程序 2.桌面新建一个excel,贴 ...