【JavaScript中的快速排序】教程文章相关的互联网学习教程文章

JavaScript实现in-place思想的快速排序方法

快速排序,又称划分交换排序。以分治法为策略实现的快速排序算法。 本文主要要谈的是利用javascript实现in-place思想的快速排序 分治法: 在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。(摘自维基百科) 快速排序的思想 数组中指定一个元素作为标尺...

JavaScript希尔排序、快速排序、归并排序算法

以var a = [4,2,6,3,1,9,5,7,8,0];为例子。 1.希尔排序。 希尔排序是在插入排序上面做的升级。是先跟距离较远的进行比较的一些方法。 function shellsort(arr){ var i,k,j,len=arr.length,gap = Math.ceil(len/2),temp; while(gap>0){ for (var k = 0; k < gap; k++) { var tagArr = []; tagArr.push(arr[k]) for (i = k+gap; i < len; i=i+gap) { temp = arr[i]; tagArr.push(temp); for (j=i-gap; j >-1; j=j-gap) { if(a...

js实现数组冒泡排序、快速排序原理

本文为大家分享了js数组冒泡排序、快速排序的实现原理,供大家参考,具体内容如下 1、冒泡排序:随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果。 var arr = [3,1,4,2,5,21,6,15,63];function sortA(arr){for(var i=0;i<arr.length-1;i++){for(var j=i+1;j<arr.length;j++){//获取第一个值和后一个值比...

Javascript实现快速排序(Quicksort)的算法详解【图】

目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快。它是图灵奖得主C. A. R. Hoare(1934--)于1960时提出来的。 "快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,选择一个元素作为"基准"(pivot)。 (2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。 (3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到...

javascript与Python快速排序实例对比

本文实例对比了javascript与Python快速排序实现方法。分享给大家供大家参考。具体如下: js实现方法:function quicksort(arr) {if (arr.length <= 1) return arrreturn quicksort(arr.filter(function (lt, i) {return i > 0 && lt < arr[0]})).concat([arr[0]]).concat(quicksort(arr.filter(function(ge, i) {return i > 0 && ge >= arr[0]}))) } python实现方法: def quicksort(arr):if len(arr) <= 1: return arrreturn quic...

JavaScript实现快速排序的方法

本文实例讲述了JavaScript实现快速排序的方法。分享给大家供大家参考。具体实现方法如下: <html> <head> <script>function quickSort(input) {if (input.length <= 1) return input;var pivot = Math.floor(Math.random()*input.length)var less = [], greater=[];var pivotElem = input.splice(pivot,1)for (x in input) {if (input[x] <= pivotElem[0])less.push(input[x])elsegreater.push(input[x])}return [].concat(quickSo...

Javascript快速排序算法详解

快速排序是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终达到整个数据变成有序序列。 假设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为基准数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为...

javascript使用数组的push方法完成快速排序

排序的方法有很多,本节介绍的是使用数组的push方法完成快速排序function quickSort(arr){if(arr.length <= 1) return arr;//判断是否有效数组var cut = Math.floor(arr.length/2);//取中间下标var left = [],right = [];var num = arr.splice(cut,1)[0];//取基准值for(var i = 0;i < arr.length;i ++){if(arr[i] < num){left.push(arr[i]);//小的放左边}else {right.push(arr[i]);//大的放右边}}return quickSort(left).concat(nu...

js快速排序的实现代码

但是有不少的书本讲得并不是很清楚,而且不同的教材的实现方式也不尽相同,我这里将最简单的快速排序的思路写出来供大家参考。 希望不管是使用什么语言都能从这个简单的代码里很方便的掌握快排思路与编写方式 代码如下:function quick_sort(list, start, end) { if (start < end) { var pivotpos = partition(list, start, end); //找出快排的基数 quick_sort(list, start, pivotpos - 1); //将...

JS实现随机化快速排序的实例代码

算法的平均时间复杂度为O(nlogn)。但是当输入是已经排序的数组或几乎排好序的输入,时间复杂度却为O(n^2)。为解决这一问题并保证平均时间复杂度为O(nlogn)的方法是引入预处理步骤,它惟一的目的是改变元素的顺序使之随机排序。这种预处理步骤可在O(n)时间内运行。能够起到同样作用的另一种简单方法是在算法中引入一个随机元素,这可以通过随机地选择拆分元素的主元来实现。随机选择主元的结果放宽了关于输入元素的所有排列的可能性...

JavaScript实现快速排序(自已编写)【图】

简述: 用到javascript的排序一组数字,js没有直接的数字比较的函数可以调用,所以自己写了一个快速排序 知识点: 1. 正则表达式提取正负数字的string 2. str 转数字 放回列表 3. js的对象Sort类的声明及定义 4. Sort类构造函数、成员函数定义方式(prototype) 5. 快速排序算法 代码: 代码如下:<!DOCTYPE html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />. <html> <title>Quick Sort</title> <head...

javascript 快速排序函数代码【图】

核心代码: 代码如下:function quickSort(arr){ //如果数组只有一个数,就直接返回; if(arr.length<1){ return arr; } //找到中间的那个数的索引值;如果是浮点数,就向下取整 var centerIndex = Math.floor(arr.length/2); //根据这个中间的数的索引值,找到这个数的值; var centerNum = arr.splice(centerIndex,1); //存放左边的数 var arrLeft = []; //存放右边的数 var arrRight = []; for(i=0;i<arr.length;i++){ if(arr[i...

快速排序 php与javascript的不同之处

1. PHP 代码如下:<?php $unsorted = array(2,4,5,63,4,5,63,2,4,43); function quicksort($array) { if (count($array) == 0) return array(); $pivot = $array[0]; $left = $right = array(); for ($i = 1; $i < count($array); $i++) { if ($array[$i] < $pivot) $left[] = $array[$i]; else $right[] = $array[$i]; } return array_merge(quicksort($left), array($pivot), quicksort($right)); } $sorted = quicksort($unsort...

js对象数组按属性快速排序

按所推荐的程序在IE下跑了下,的确,排序耗时很小。 代码如下:<script> /* * 洗牌 */ function getRandomPlayCard(m){ var array1=new Array(m); for(var i=0;i<m;i++){ var rnd=Math.floor(Math.random()*(i+0.99999)) array1[i]=array1[rnd]; array1[rnd]=i; } return array1; }; /* * 快速排序,按某个属性,或按“获取排序依据的函数”,来排序. * @method soryBy * @static * @param {array} arr 待处理数组 * @param {strin...

JavaScript快速排序

function quickSort() { function doSort(a,s,e) { if(stemp); if(s>e)break; var tem=a[s]; a[s]=a[e]; a[e]=tem; } a[st]=a[e]; a[e]=temp; return e; } doSort(this,0,this.length-1); return this; } Array.prototype.quickSort=quickSort; alert(new Array(5,2,4,6,1).quickSort()); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 代码如下:再你多快,你快不过Array.prototype.sort var a=[4,723,3,...

JAVASCRIPT - 技术教程分类
JavaScript 教程 JavaScript 简介 JavaScript 用法 JavaScript Chrome 中运行 JavaScript 输出 JavaScript 语法 JavaScript 语句 JavaScript 注释 JavaScript 变量 JavaScript 数据类型 JavaScript 对象 JavaScript 函数 JavaScript 作用域 JavaScript 事件 JavaScript 字符串 JavaScript 运算符 JavaScript 比较 JavaScript 条件语句 JavaScript switch 语句 JavaScript for 循环 JavaScript while 循环 JavaScript break 和 continue 语... JavaScript typeof JavaScript 类型转换 JavaScript 正则表达式 JavaScript 错误 JavaScript 调试 JavaScript 变量提升 JavaScript 严格模式 JavaScript 使用误区 JavaScript 表单 JavaScript 表单验证 JavaScript 验证 API JavaScript 保留关键字 JavaScript this JavaScript let 和 const JavaScript JSON JavaScript void JavaScript 异步编程 JavaScript Promise JavaScript 代码规范 JavaScript 函数定义 JavaScript 函数参数 JavaScript 函数调用 JavaScript 闭包 DOM 简介 DOM HTML DOM CSS DOM 事件 DOM EventListener DOM 元素 HTMLCollection 对象 NodeList 对象 JavaScript 对象 JavaScript prototype JavaScript Number 对象 JavaScript String JavaScript Date(日期) JavaScript Array(数组) JavaScript Boolean(布尔) JavaScript Math(算数) JavaScript RegExp 对象 JavaScript Window JavaScript Window Location JavaScript Navigator JavaScript 弹窗 JavaScript 计时事件 JavaScript Cookie JavaScript 库 JavaScript 实例 JavaScript 对象实例 JavaScript 浏览器对象实例 JavaScript HTML DOM 实例 JavaScript 总结 JavaScript 对象 HTML DOM 对象 JavaScript 异步编程 javascript 全部