精华内容
下载资源
问答
  • JS数组快速排序的三种方式

    千次阅读 2020-10-21 16:50:57
    JS 数组快速排序的三种方式使用双循环冒泡排序使用递归函数使用sort方法粗暴又简洁 使用双循环冒泡排序 var arr = [6,7,34,23,78,23,9,787,1] for(let i = 0; i < arr.length; i++) { for (let j=0; j < arr...

    使用双循环冒泡排序

    var arr = [6,7,34,23,78,23,9,787,1]
    
    for(let i = 0; i < arr.length; i++) {
      for (let j=0; j < arr.length-i; j++) {
        if (arr[j] > arr[j+1]) {
          let num = arr[j]
          arr[j] = arr[j+1]
          arr[j+1] = num
        }
      }
    }
    console.log(arr) // [1, 6, 7, 9, 23, 23, 34, 78, 787]
    

    使用递归函数

    var arr = [6,7,34,23,78,23,9,787,1]
    var arr1 = []
    resets(arr)
    function resets(arr) {
      if (arr.length>0) {
        var nuk = Math.max(...arr)
        arr1.unshift(nuk)
        arr.splice(arr.indexOf(nuk), 1)
        resets(arr)
      } else {
        return
      }
    }
    console.log(arr1) // [1, 6, 7, 9, 23, 23, 34, 78, 787]
    

    使用sort方法粗暴又简洁

    var arr = [6,7,34,23,78,23,9,787,1]
    arr.sort(function (a, b) {
      return a - b
    })
    console.log(arr1) // [1, 6, 7, 9, 23, 23, 34, 78, 787]
    

    使用sort方法

    var arr = [2,4,6,8,23,1,4,0,3,7];
    
        arr.sort((a, b) => {
          return a > b ? 1 : -1;
        });
    
        console.log(arr) // [0, 1, 2, 3, 4, 4, 6, 7, 8, 23]
    
    展开全文
  • js 数组快速排序算法

    2019-10-30 20:52:17
    之前看了一下百度百科的快速排序算法,所以现在就想写下加深点印象。代码在最下方,前面是我个人理解。 二, 看图说话 我这个图是在百度百科上拉取的,百度百科是动态的,我的不能动抱歉,要看原图地址的来这,我...

    一, 序言(内容与代码无关)

    之前看了一下百度百科的快速排序算法,所以现在就想写下加深点印象。代码在最下方,前面是我个人理解。

    二, 看图说话

    在这里插入图片描述
    我这个图是在百度百科上拉取的,百度百科是动态的,我的不能动抱歉,要看原图地址的来这,我这里直接根据原始图片来讲解了。

    2.1 快速排序

    第一步: 在一个数组内确定一个基准值
    第二步: 通过这基准值将数组分成左右俩个数组
    第三步: 重复前两步就可以了。
    要是不明白看下这个图片
    每次排序的目的: 就是在每次排序的时候,把基准值都排到数组的“中间”(数据大小的中间),基准值的左侧都是比她的,基准值的右侧都是比她的值,按比较容易理解的想法就是,每次我们只是找出基准值正确位置

    三,代码区

    var arr = [101,5,199,95,97,97,100]; //需要处理的数组
    function quickSort(arr,_begin,_end){
      var i=_begin;
      var j=_end;
      var key = arr[_begin]; //基准值(为了便于排序建议取第一个或最后一个,这里取数组第一个)
      if(i>= j){ //如果数组只有一个元素
          return;
      }
      while(i<j){ //开始值小于结束值时,数组数据一直进行对比
          while(i<j&&arr[j]>key){  //首先从后往前找,找出比基准值小的记下位置信息,
              j--;
          }
          while(i<j&&arr[i]<=key){ //接着从前往后找,找出比基准值大的记下位置信息,
              i++;
          }
          if(i<j){   //从上述对比的数据结果中,找出符合条件的数据位置进行调换,
              var temp=arr[i]; 
              arr[i] = arr[j];
              arr[j]= temp;
          }
      }
      这里我们那第一次排序结束为案例,(记住一点每次排序的目的)。
      // console.log( "原数组位置未发生变化,但第一次排序已经结束,此时 i==j",arr,i,j)
      arr[_begin] = arr[i];   //原数组中间位置数据放在原基准值位置,(j,i)
      // console.log( "原数组中间位置数据与基准值位置对调",arr,i,j)
      arr[i] = key;   //将原基准值放在新数组的中间,区分出左右两组数据,左边小于基准值,右边大于基准值。
      // console.log( "得出第一次排序的最终数组",arr,i,j)
      // debugger //这里打的debugger为了方便我们看每进行一次排序后数组的结果
      上述只是找出了一个基准值的位置,并且将数组由基准值值位置分成了两个小数组
      quickSort(arr,_begin,i-1);  //左侧的数组进行上述操作,
      quickSort(arr,i+1,_end);	//左侧数组排序完后,右侧数组重复上述操作。
       return arr;
    }
    quickSort(arr,0,arr.length-1)
    console.log(arr)
    
    

    四, 总计

    这次的文章主要还是根据百度百科,里面还包含了许多其他语言的快排方法,觉得百度百科牛人还真是多啊!加油!!!。
    参考地址:https://baike.baidu.com/item/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/369842?fromtitle=%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F&fromid=2084344&fr=aladdin

    展开全文
  • js数组快速排序

    千次阅读 2017-12-09 16:51:32
    快速排序就是找基准,小的放左边,大的放右边,并把左右递归 var arr = [1,8,2,5,14,2,4,8,10,32,45,3]; console.log(sort(arr, "min")) console.log(sort(arr, "max")) function sort(arr, type) { var arr_len ...
    快速排序就是找基准,小的放左边,大的放右边,并把左右递归 var arr = [1,8,2,5,14,2,4,8,10,32,45,3]; 
    console.log(sort(arr, "min")) 
    console.log(sort(arr, "max")) 
    function check(arr1) {
    var arr_len = arr1.length;
      if (arr_len <= 1){
      return arr1;
      }
      var middle = parseInt(arr_len / 2);
      var m = arr1.splice(middle, 1)[0];
      var left = [];
      var right = [];
      arr_len--;
      for (var i = 0; i < arr_len; i++){
      var flag = m < arr1[i] ;
      if (t) {
      flag = m > arr1[i]
      }
      if (flag){ left.push(arr1[i]); }
      else { right.push(arr1[i]); }
      }
      return check(left).concat([m], check(right));
    } 
    function sort(arr, type) { 
      var arr_len = arr.length; 
      var arr1 = []; 
      arr1 = arr1.concat(arr); 
      var t = type ? (type.toLowerCase() === "min" ? true : false) : false; 
      return check(arr1); 
    }
    

     

    展开全文
  • 按所推荐的程序在IE下跑了下,的确,排序耗时很小。 代码如下: [removed] /* * 洗牌 */ function ... /* * 快速排序,按某个属性,或按“获取排序依据的函数”,来排序. * @method soryBy * @static * @
  • js数组快速排序-算法

    2021-01-30 17:22:24
    构思 ...第三步:对左右数组进行排序,(前提数组长度大于等于2) 第四步:整合数组就行 代码如下 var arr=[32,45,78,9,1,6]; function f(arr) { //先找一个基点32 ,都32小的放入左数组,比32大的

    构思

    比如一个数组: var arr=[32,45,78,9,1,6]

    第一步:找一个基点,比如找32,建立左右2个空数组

    第二步:根据基点把大于基点的数放右边数组,小于基点的数放左边数组
    于是有:左数组 [9,1,6] 右数组 [45,78]

    第三步:对左右数组进行排序,(前提数组长度大于等于2)

    第四步:整合数组就行

    代码如下

      var arr=[32,45,78,9,1,6];
        function f(arr) {
            //先找一个基点32 ,都32小的放入左数组,比32大的放入右数组
            var jd=arr[0];
            var left_arr=[];
            var right_arr=[];
            for (var i=1;i<arr.length;i++){
                if (arr[i]>jd) {
                    right_arr.push(arr[i]);
                }else {
                    left_arr.push(arr[i]);
                }
            } //遍历数组
    
            //左右数组分好后,对左右数组进行排序 里面的数组长度一定要大于2,不然没意义
            if (left_arr.length>=2){
                left_arr=f(left_arr);
            }
            if (right_arr.length>=2) {
                right_arr=f(right_arr);
            }
            return left_arr.concat(jd,right_arr);
        }
       let a =f(arr);
        console.log(a);
    

    控制台输出:
    在这里插入图片描述

    展开全文
  • 数组快速排序

    2020-04-06 15:08:29
    sort() 方法 用于对数组的元素进行排序 1. 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,也就是是按照字符编码的顺序进行排序。 var arr= [9,5,3,10,23,4,43]; var newarr = arr.sort(); ...
  • JS实现数组快速排序

    2021-06-07 12:17:29
    快速排序法 const log = console.log; function rand(min, max) { let f = Math.min(min, max); let t = Math.max(min, max); let len = Math.abs(t - f); let r = Math.floor(f + Math.random() * len); ...
  • 请使用javascript写出数组快速排序代码 <script> function quiktSort(arr){ var left =[],right=[]; if(arr.length<1){ return arr; } //求数组的长度的一半 var index = Math.floor(arr....
  • 主要介绍了JS数组排序技巧,实例汇总了JavaScript冒泡排序、sort排序、快速排序、希尔排序等,并附带分析了sort排序的相关注意事项,需要的朋友可以参考下
  • 用递归实现数组快速排序,思路: 1、先找出数组中 中间的数 2、创建左边、右边的空数组 3、将数组中的每个数与中间的数字相比较,如果小,就放到新创建的左边的数组中,如果大,就放到新创建的右边的数组中; 4、...
  • 本文为大家分享了js数组冒泡排序、快速排序的实现原理,供大家参考,具体内容如下 1、冒泡排序:  随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说...
  • js数组快速排序方法

    2020-04-14 17:47:07
    js数组快速排序方法 function quickSort(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; ...
  • javascript数组快速排序

    2019-03-15 08:37:38
    var nums = [99,2,3,27,31,0] function quickSort(n1,n2){ console.log(‘n1’,n1); console.log(‘n2’,n2); console.log(’=分割线’) if (n1&lt;n2) { return -1; }else if (n1&...n...
  • quickSort(arr,parm,sortsc) { if(arr.length < 1) {//如果数组就是一项,那么可以直接返回 return arr; } let centerIndex = Math.floor(arr.length / 2);//获取数组中间的索引 ...
  • 大致分三步: 1、找基准(一般是以中间项为基准) 2、遍历数组,小于基准的放在left,大于基准的放在right ...//快速排序 function quickSort(arr){ //如果数组<=1,则直接返回 if(arr.leng...
  • js实现数组数字的快速排序方法

    千次阅读 2018-11-22 10:00:57
    js实现数组数字的快速排序方法 // 快速排序: let array3=[51,61,20,81,157,-27,14,3,99,-41,82,43,-8,187,137,-74,18,-32,200]; let count2=0; let midIndex=array3.length/2|0; let midValue=...
  • js数组排序的五种方式

    千次阅读 2021-05-15 14:35:31
    1.Javascript的sort方法,本方法的原理是冒泡排序,这里默认从小到大排序 <script> var arr = [23,13,34,65,65,45,89,13,1]; var newArr = arr.sort(function(a,b){ return a - b; }); console.log...
  • JavaScript 数组排序

    2021-01-07 19:35:50
    JavaScript 数组排序1、reverse 方法2、sort 方法 1、reverse 方法 reverse 方法会将数组内的元素反序排序。如: let arr = [1,2,3,4,5,6]; arr.reverse();// arr = [6,5,4,3,2,1] 2、sort 方法 sort 方法默认会...
  • 感觉用的话都是两数组用的多,但是考都感觉考两指针比较多 主流思想都是分治递归,然后这里都选取了第一个数作为基准 两数组会返回一个arr数组 //两数组 function QuickSort(arr){ let len=arr.length; if(len<...
  • 快速排序 希尔排序 数组排序 排序,就是把一个乱序的数组,通过我们的处理,让他变成一个有序的数组 1. sort()方法 sort() 数组对象排序 其原理是冒泡排序 reverse() 方法能够颠倒数组元素的排列顺序 例如: var ...
  • JS数组快速排序

    2021-02-17 19:28:03
    一、找出数组的中间下标mIndex,因为可能不是整数,所以使用Math.floor()向下取整 二、通过中间下标获取数组中中间下标的值mVal 三、创建左右两个空数组,小于mVal的值放进左数组,大于mVal的值放入右数组 四、采用...
  • 冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排...
  • Java实现数组快速排序快速排序算法) &lt;a class="follow-nickName" href="https://me.csdn.net/gg543012991" target="_blank"&gt;安...
  • JavaScript数组随机排序

    千次阅读 2017-04-11 09:41:57
    JavaScript 开发中有时会遇到要将一个数组随机排序(shuffle)的需求,一个常见的写法是这样:function shuffle(arr) { arr.sort(function () { return Math.random() - 0.5; }); } 或者使用更...
  • 排序的方法有很多,本节介绍的是使用数组的push方法完成快速排序 function quickSort(arr){ if(arr.length <= 1) return arr;//判断是否有效数组 var cut = Math.floor(arr.length/2);//取中间下标 var left ...
  • 数组中的快速排序就是取原始数组中的一个元素最为基点,小于基点的放在一个数组中,大于基点的放在一个数组中,无限循环,知道将数组分解到长度(length<1)停止 var arr = [12, 3, 569, 78, 0, -56, -56, -56, ...
  • js数组排序的几种方法

    千次阅读 2019-10-23 10:24:19
    是的大的元素放到后边,元素交换位置,从而一步步的交换元素的位置,使得最大的元素放到数组的末尾,这样内部的循环就进行了一轮,再根据外部的循环依次再把次大一点的元素放到数组的末尾,从而实现数组的逐步排序。...
  • 因为数组的索引就可以获取数组中的内容 数组的索引又是按照0-n顺序排列 我们就可以使用for循环来循环数组,因为for循环我们也可以设置成0-n顺序增加 我们把这个行为叫做遍历 var arr = [1,2,3,4,5]; // 使用 for ...
  • 1.数组去重 只讨论两种,当然方法很多。 A: 最简单实现 思路:定义一个新的空数组 n,利用 indexOf 判断, 遍历数组 arr ,如果 arr[i] 已经存在于 n 数组内,不添加;否则就将 arr[i] 添加到数组 n 中, 最后返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,339
精华内容 11,735
关键字:

数组快速排序js