zoukankan      html  css  js  c++  java
  • javascript之快速排序

      快速排序思想其实还是挺简单的,分三步走:

      1、在数组中找到基准点,其他数与之比较。

      2、建立两个数组,小于基准点的数存储在左边数组,大于基准点的数存储在右边数组。

      3、拼接数组,然后左边数组与右边数组继续执行1、2两个步骤,直到最后完成数组排序。

      这里直接上代码: 

    function quickSort(arr){
            if(arr.length<=1){
                return arr  // 如果数组长度小于或等于1,则直接返回数组
            }
            var num = Math.floor(arr.length/2);  // 找到数组中间的索引,如果是浮点数,则向下取整
            var centerVal = arr.splice(num,1);  // 找到数组中间索引的值
            var left = [];
            var right = [];
            for(var i=0;i<arr.length;i++){
                if(arr[i]<centerVal){
                    left.push(arr[i])  // 基准点左边的数放到左边数组
                }else{
                    right.push(arr[i]) // 基准点右边的数放到右边数组
                }
            }
            // 利用concat拼接数组,并调用quickSort方法
            return quickSort(left).concat([centerVal],quickSort(right)) 
        }
        alert(quickSort([12,4654,389798,313,453,15,16,43]))

      分析:实现快速排序的几个要点:

      1、找到比较的基准点;

      2、建立两个空数组,用来分别存放与基准点相比较的数。

      3、将数组中的数分别与基准点相比较,小于基准点的数存放在左边数组,否则存放在右边数组。

      4、将左边数组、基准点、右边数组拼接起来,拼接的同时,左、右两个数组分别执行前3个步骤,直到完成数组的最终排序。

  • 相关阅读:
    oracle查询第几行到第几行的数据
    php/js将 CST时间转成格式化时间
    js获取当前时间:yyyy-MM-dd HH:MM:SS
    mysql 查询时间戳格式化 和thinkphp查询时间戳转换
    Java语言基础:运算符
    APP的三种开发模式
    架构图-模型
    Java语言基础:常量和变量
    APP开发之Dcloud简介
    APP开发
  • 原文地址:https://www.cnblogs.com/jf-67/p/7232723.html
Copyright © 2011-2022 走看看