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));
    }

      

  • 相关阅读:
    java中的拷贝(二)深克隆
    java中的拷贝(一)
    java类的访问权限
    对象和对象引用
    equals和==
    类与继承(一)
    WebSocket简单介绍
    php获取请求的方式(get/post)
    php 使用jquery实现ajax
    PHP 系统常量及自定义常量
  • 原文地址:https://www.cnblogs.com/donglegend/p/4718211.html
Copyright © 2011-2022 走看看