【JavaScript算法】---快速排序法

一、快速排序法概念

  我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边。比较完毕后再次取中间值,再次比较一次类推

二、思路

  1、取的中间值,以及中间值的下标

  2、创建一个left空数组,存放小于中间值的数据

  3、创建一个right空数组,存放大于中间值的数据

  4、递归的终止条件,如果数组的长度等于1的时候就返回数组

  5、循环将数组一分为二

  6、递归

三、代码

function quicksort(arr){
    if(arr.length<2){
        return arr;
    }

    var midIndex = arr.length%2 == 0? arr.length/2 : (arr.length+1)/2;
    var mid = arr[midIndex];

    var left  = [];
    var right = [];

    for(var i=0;i<arr.length;i++){
        if(i != midIndex && arr[i] <= mid){
            left.push(arr[i]);
        }

        if(i != midIndex && arr[i] > mid){
            right.push(arr[i])
        }
    }

    return quicksort(left).concat(mid).concat(quicksort(right))
}

原文地址:https://www.cnblogs.com/nanianqiming/p/9541638.html

时间: 2024-10-12 23:50:04

【JavaScript算法】---快速排序法的相关文章

javascript的快速排序法

在排序方式中,快速是比较普遍使用的,因为其速度快. 因为其是不断的递归,而且是根据基准点的左右两边开始递归,直到数组只有一个值的时候才返回. 这个基准点是自己定的. 一般取中间,比较好理解. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> va

php 四种基础算法 ---- 快速排序法

4.快速排序法 代码: function quick_sort($arr) {    //先判断是否需要继续进行    $length = count($arr);    if($length <= 1) {        return $arr;    }    //如果没有返回,说明数组内的元素个数 多余1个,需要排序    //选择一个标尺    //选择第一个元素    $base_num = $arr[0];    //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内    //

Javascript算法系列之快速排序(Quicksort)

Javascript算法系列之快速排序(Quicksort) 原文出自: http://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/ https://gist.github.com/paullewis/1981455#file-gistfile1-js 快速排序(Quicksort)是对冒泡排序的一种改进,是一种分而治之算法归并排序的风格 核心的思想就是通过一趟排序将要排序的数据分割成独立的

php四种基础算法:冒泡,选择,插入和快速排序法

转自:http://www.php100.com/html/php/rumen/2013/1029/6333.html 许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要掌握的.下面是我按自己的理解,将四个方法分析一遍. 需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中 的值按照从小到的顺序进行排序. $arr(1,43,5

php四种基础算法:冒泡,选择,插入和快速排序法PHP基础教程

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西.但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要掌握的.下面兄弟连PHP培训 小编将四个方法分析一遍. 需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中 的值按照从小到的顺序进行排序. $arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序法 * 思路分析:法如其名,就是像冒泡一样,每次

java基本排序算法总结 (二)——快速排序法

在网上论坛上看了很多例子,快速排序算法是各公司面试笔试常考的一种算法,并且在平时的实际应用中表现形式和实现过程也是非常优秀,笔者认为快速排序法的思想就是基于冒泡排序法,冒泡排序法是将相邻元素进行比较来进行元素的交换排序,而快速排序法则通过确定一个基准元素,将比它大或者小的的元素分别归为一组从而进行递归排序,这里具体的实现结果有点像二分法的概念.在这里借用一张网上的图片来进一步解释 如图,首先我们以头一个元素57为基准点,首先与数组的最后一个元素进行比较,57>19则交换到高位,然后与数组第二位进

javascript实现快速排序算法

忘记了快速排序的思路是怎样的了,复习一下,写了两个实例,发表博文备忘. 对于快速排序的思想,可以参考白话经典算法系列之六 快速排序 快速搞定,讲得比较通俗 prototype扩展的方式 12345678910111213141516171819202122232425262728293031323334 /** * 对Array对象的原型扩展来实现快速排序 * @param [left] 排序开始位置 * @param [right] 排序结束位置 * @returns {Array} */Ar

排序算法之JAVA终极快速排序法

package net.qh.test.sort; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * Created by Administrator on 2016/03/01. */ public class TermSimpleQuick { public int[] sort(int[] arr,int left,int right){ if ( arr == null

快速排序法(一)

说明快速排序法(quick sort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的.快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择.这边所介绍的第一个快速排序法版本,是在多数的教科书上所提及的版本,因为它最容易理解,也最符合轴心分割与左右进行排序的概念,适合对初学者进行讲解.解法这边所介绍的快速演算如下:将最