javascript 快速排序方法

"快速排序"的思想很简单,整个排序过程只需要三步:

(1)在数据集之中,选择一个元素作为"基准"(pivot)。

(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。

(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

var function quickSort(arr){

  if(arr.length<=0){

    return arr;

  }

    var pivotIndex = Math.floor(arr.length / 2) ;

   var pivot = arr.splice(pivotIndex, 1)[0];

   var left = [];

   var 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));//使用递归不断重复这个过程,就可以得到排序后的数组。

}

 

时间: 2024-10-11 05:26:04

javascript 快速排序方法的相关文章

JavaScript 字符串方法

字符方法<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>字符方法</title> </head> <body> <script type="text/javascript"> /* charAt方法和charCodeAt方法都接收一个参数,基于0的字

Firefox下javascript调试方法

前面博文谈了一下IE浏览器下javascript的调试方法,今天没事干就把火狐浏览器(Firefox)下的javascript调试方法也看了一下,记录在此,希望对大家有所帮助. 我们这次使用的代码页面为document获取对象博文中的按name属性获取对象的代码. <html> <head> <title>getElementsByName</title> </head> <body> <form id="form1&

javascript sort方法容易犯错的地方

sort方法用来对数组排序非常方便.但是sort(func)这个func参数的构造却很容易混淆. 这个func的作用是,把排序结果里任意相邻两项a,b放入到func里来执行,如果返回值都为-1,则为正序排列,如返回值都为1,则为逆序排列. 例如,[1,3,65,97,45,6,2] 如果要正序,就应该写成[1,3,65,97,45,6,2].sort(function(a, b){return a - b;}), 如果要逆序:[1,3,65,97,45,6,2].sort(function(a,

JavaScript 字符串方法(二)

字符串大小写转换方法<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>大小写转换</title> </head> <body> <script type="text/javascript"> var str="HELLO world"

JavaScript数组方法对比(深度学习数组)

JavaScript数组方法对比 众所周知,JavaScript提供了许多对数组进行改变的方法,但是有些会对原数组进行影响,有些不会.下边就列举出来. 一.新增 影响原数组 array.push()  //向数组的末尾添加一个或更多元素,并返回新的长度. var array =[1,2,3,4,5]; array.push(6); // [1,2,3,4,5,6]; array.unshift() //向数组的开头添加一个或更多元素,并返回新的长度. var array =[1,2,3,4,5]

Javascript创建对象方法

1.工厂模式:及时由一个工厂类根据传入的参数决定生产那种产品类 function createPerson(name,age,job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(this.name); } return o; } var person = createPerson("xiaoqiang",12,"student&

javascript 字符串方法名调用

项目中有时候需要通过字符串传递方法名称,供页面调用 var ParameterDefaultCallMethod = Request("ParameterDefaultCallMethod"); //默认调用方法 if (ParameterDefaultCallMethod != null && ParameterDefaultCallMethod != "") { eval('window.parent.' + ParameterDefaultCa

编写javascript的方法实现的一些功能。

编写一个javascript函数方法parseQueryString,把url参数解析为一个对象 var url="http://www.taobao.com/index.php?key0=0&key1=1&key2=2"; function parseQueryString(){ var str=url.split("?")[1]; var items=str.split("&"); var result={}; var

JavaScript - reduce方法 (Array)

JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:arr.reduce(callback,[initialValue]) 参数: callback:执行数组中每个值的函数,包含四个参数 previousValue:上一次调用回调返回的值,或者是提供的初始值(initialValue) currentValue:数组中当前被处理的元素 index:当前