javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > js数据结构排序

js数据结构排序示例教程(全网精简版)

作者:..儒

排序算法是属于数据结构的知识点,这篇文章主要介绍了js数据结构排序的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用js具有一定的参考借鉴价值,需要的朋友可以参考下

冒泡排序

    function  BubbleSort(){
    const{length}=array
       for(let i=0;i<length;i++)
       {
        for (let j=0;j<length-1-i;j++){
          if(arr[j]>arr[j+1]){
          swap(arr,j,j+1)
          }
        }
       }
       console.log(arry);
    }
    function swap(arry, a, b) {
        const temp = arry[a]
        arry[a] = arry[b]
        arry[b] = temp
//或者用 [arry[b],arry[a]]=[arry[a],arry[b]]//es6中数组解构

      }

    var arr= [1,2,3,4,5]

选择排序

记录并不断更改索引值,找到最小的数后替换

假设数组为 [5, 3, 8, 4, 2]

排序完成,最终数组为 [2, 3, 4, 5, 8]

插入排序

记录索引对于元素的值,就是把大的数往后面覆盖,最后肯定右两个重复的大数,直接把当前的temp覆盖到排在前面的大数就行

function insertSort(){
  const {length}=arr
  let temp
  for(let i=1;i<length;i++){
    temp=arr[i]
    j=i
    while(j>0&&arr[j-1]>temp){
        arr[j]=arr[j-1]
        j--
    }
    arr[j]=temp
  }
  console.log(arr);
} 
insertSort=[5, 4, 3, 3, 1]

具体用实例说明

归并排序

火狐浏览器的sort就是基于这种排序,chrome用到快速排序

    function mergeSort(array){
    if(array.length>1){
   const {length}=array 
    const middle=Math.floor(length/2)
    const left=mergeSort(array.slice(0,middle))
    const right=mergeSort(array.slice(middle,length))
    array=merge(left,right)
    }
        }
        function merge(left,right){
          let i=0;
          let j=0;
    const result=[]
    while(i<left.length&&i<right.length){
      result.push(left[i]<right[i]?left[i++]:right[i++])
    }
    result.concat(i<left.length?left.slice(i):right.slice(j))
        }
        mergeSort([5,4,3,2,1])

用具体例子解释一下执行过程

快速排序

以一个元素为基准(可以是middle,0,length-1)把比它小的放一堆,比它大的放一堆,在以第一堆的元素中挑一个基准,比它大的挑一堆,比它小的调一堆,分到最后把这几堆和一起。

    function quickStore(){
      const {length}=arr
      if(length<2){
        return arr
      }
      let base=arr[0]
      let minArr=arr.slice(1).filter(item=>item>=base)
      let maxArr=arr.slick(1).filter(item=>item<base)
      return quickStore(minArr).contact(base).contact(quickStore(maxArrft))
    }

计数排序

但是会占据空间

找到最大值

const maxValue = findMax(arr)
// const maxValue = Math.max(...arr)

:初始化计数数组

const counts = new Array(maxValue + 1)

总结 

到此这篇关于js数据结构排序的文章就介绍到这了,更多相关js数据结构排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文