zoukankan      html  css  js  c++  java
  • js 中的快速排序算法简单实现

      对于快速排序,最早是在c++中看到,它是利用指针来交换顺序,其实无论哪种语言,原理 和 思想都是一样,然而真正用起来的时候就特别容易忽略一些事实,导致实现失败。废话少说,下面用js实现一下快速排序:

      基本算法是 找出一个基准值,小于基准值的放在左边,大于基准值的放在右边。然后重复这个算法,直至数组的长度为小于等于1.

    第一遍代码如下:

    var quickSort = function (arr){
        if(arr.length <=1) {return arr;}

        var left = [];
        var right = [];
        var standIndex = Math.floor(arr.length/2);
        var standNum = arr[standIndex];
        for(var i=0; i<arr.length; i++){
            if(arr[i] < standNum){
                left.push(arr[i]);
            }else{
                right.push(arr[i]);
           }
        }
        return quickSort(left).concat(quickSort(right));
    }

    结果呢,可能如你所料,直接崩溃了,郁闷至极啊,找了好久的错误,幡然醒悟,特么的 ,已经被当作基准的值竟然又一次参与排序了,结果就悲剧了。

    再次修正代码如下:(认真看改动的地方)

    var quickSort = function (arr){
        if(arr.length <=1) {return arr;}

        var left = [];
        var right = [];
        var standIndex = Math.floor(arr.length/2);
        var standNum = arr[standIndex];
        for(var i=0; i<arr.length; i++){
            if(arr[i] < standNum){
                left.push(arr[i]);
            }else if(arr[i] > standNum){
                right.push(arr[i]);
           }
        }
        return quickSort(left).concat([standNum], quickSort(right));
    }

      

  • 相关阅读:
    开启nginx缓存
    xsl输出html代码 非闭合
    记一次网络波动导致druid连接池无法创建新连接的BUG
    mysql时间操作
    JVM知识点精华汇总
    java 基础 ---HashMap、HashTable
    java面试--小谈如何面试
    Spring框架
    JAVA+微信支付APP开发+支付宝支付APP开发
    消息队列
  • 原文地址:https://www.cnblogs.com/donglegend/p/4718211.html
Copyright © 2011-2022 走看看