js数组排序的几种方法

JavaScript043

js数组排序的几种方法,第1张

一、 冒泡排序

平均复杂度:o(n^2)空间复杂度:o(1)稳定性:稳定

步骤: 1、比较相邻的元素。如果第一个比第二个大,就交换他们两个;

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样,最后的元素应该会是最大的数;

3、针对所有的元素重复以上的步骤,除了最后一个;

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

二、选择排序

平均复杂度:o(n^2)空间复杂度:o(1)稳定性:不稳定

步骤: 1、每一次循环,找到最小的那个数,并用变量记住它的索引

2、然后将最小值放在它该在的位置上

3、持续对越来越少的元素重复上面的步骤

三、插入排序

平均复杂度:o(n^2)空间复杂度:o(1)稳定性:稳定

(1)直接插入排序:将第一个数和第二个数排序,然后构成一个有序序列;将第三个数插入进去,构成一个新的有序序列;对第四个数、第五个数......直到最后一个数,重复第二步

(2)二分插入排序:将寻找每个数插入位置的方法改为折半比较即可

四、Shell排序(插入排序的一种,又称为缩小增量排序)

平均复杂度:o(nlogn)空间复杂度:o(1)稳定性:不稳定

步骤:把数组按下标的一定增量分组,然后对每组使用直接插入排序

想学习更多前端开发的知识,就来北京尚学堂!

JS数组多条件排序基于Array.sort()方法,首先要了解sort()方法的用法。

sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序。

eg:

sort()方法接收函数作为参数时,排序主要根据传入函数的返回值是否大于0进行排序。

1)当 a-b <0时,则a元素排在b元素的前面;(a、b元素位置不变)

2)当a-b= 0时,a,b元素的位置不变;

3)当a-b >0时,则b元素排在a元素的前面。(a、b元素位置交换)

当数组元素为对象时,若要根据对象的多个属性进行排序,就涉及到多条件排序。

从给定的数据中,随机抽出一项,这项的左边放所有比它小的,右边放比它大的,然后再分别这两边执行上述操作,采用的是递归的思想,总结出来就是 实现一层,分别给两边递归,设置好出口

function fastSort(array,head,tail){

    //考虑到给每个分区操作的时候都是在原有的数组中进行操作的,所以这里head,tail来确定分片的位置

    /*生成随机项*/

    var randomnum = Math.floor(ranDom(head,tail))

    var random = array[randomnum]

    /*将小于random的项放置在其左边  策略就是通过一个临时的数组来储存分好区的结果,再到原数组中替换*/

    var arrayTemp = []

    var unshiftHead = 0

    for(var i = headi <= taili++){

      if(array[i]<random){

        arrayTemp.unshift(array[i])

        unshiftHead++

      }else if(array[i]>random){

        arrayTemp.push(array[i])

      }

      /*当它等于的时候放哪,这里我想选择放到队列的前面,也就是从unshift后的第一个位置放置*/

      if(array[i]===random){

        arrayTemp.splice(unshiftHead,0,array[i])

      }

    }

    /*将对应项覆盖原来的记录*/

    for(var j = head , u=0j <= tailj++,u++){

      array.splice(j,1,arrayTemp[u])

    }

    /*寻找中间项所在的index*/

    var nowIndex = array.indexOf(random)

    /*设置出口,当要放进去的片段只有2项的时候就可以收工了*/

    if(arrayTemp.length <= 2){

      return

    }

    /*递归,同时应用其左右两个区域*/

    fastSort(array,head,nowIndex)

    fastSort(array,nowIndex+1,tail)

  }

JavaScript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。

sort() 方法用于对数组的元素进行排序。语法如下:

arrayObject.sort(sortby)

例如:

function NumAscSort(a,b)

{

 return a - b

}

function NumDescSort(a,b)

{

 return b - a

}

var arr = new Array( 3600, 5010, 10100, 801) 

arr.sort(NumDescSort)

alert(arr)

arr.sort(NumAscSort)

alert(arr)