首页 > 其他分享 >js实现快速排序和归并排序

js实现快速排序和归并排序

时间:2024-01-17 10:55:36浏览次数:19  
标签:function mergeSort 归并 arr js 排序

let arr1 = [8,3,9,14,32,2,1,5]
    // 归并排序
    function mergeSort(arr){
      if(arr.length<2)return arr
      let mid = Math.floor(arr.length/2)
      let left = arr.slice(0,mid)
      let right = arr.slice(mid)
      return merge(mergeSort(left),mergeSort(right))
    }
    function merge(left,right){
      let result = []
      while(left.length && right.length){
        if(left[0]<right[0]){
          result.push(left.shift())
        }else{
          result.push(right.shift())
        }
      }
      return result.concat(left,right)
    }

    // 快速排序
    function quickSort(arr){
      if(arr.length<2)return arr
      let mid = Math.floor(arr.length/2)
      let pivot = arr.splice(mid,1)[0]
      let left = [],right = []
      for(let v of arr){
        v<pivot ? left.push(v) : right.push(v)
      }
      return quickSort(left).concat(pivot,quickSort(right))
    }

  

标签:function,mergeSort,归并,arr,js,排序
From: https://www.cnblogs.com/liangtang/p/17969425

相关文章

  • python 在排序数组中查找元素的第一个和最后一个位置 多种解法
    二分查找:基于二分查找的算法可以在O(logn)的时间复杂度内解决该问题。具体实现方式是,先使用二分查找找到该元素的位置,然后向左和向右扩展,直到找到第一个和最后一个位置。代码如下:defsearchRange(nums,target):defbinarySearch(nums,target,lower):left,righ......
  • 成为一个合格程序员所必备的三种常见LeetCode排序算法
    排序算法是一种通过特定的算法因式将一组或多组数据按照既定模式进行重新排序的方法。通过排序,我们可以得到一个新的序列,该序列遵循一定的规则并展现出一定的规律。经过排序处理后的数据可以更方便地进行筛选和计算,从而大大提高了计算效率。因此,掌握排序算法是每个程序员的基本功......
  • java排序算法
    Java中常用的排序算法包括以下几种:冒泡排序(BubbleSort):这是一种简单的排序算法,通过重复地遍历待排序的序列,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历序列的工作是重复地进行直到没有再需要交换,也就是说该序列已经排序完成。选择排序(SelectionSort):这种排序算法......
  • vue+js实现点击图片,图片放大
    1.首先在template中插入image,并赋予点击事件(这个时候是小图)<template><div><imgsrc="@/assets/images/avatar.png"@click="imgShow()"/></div></template>2.data定义点击放大的图片url,imageUrl为点击后放大的大图的urldata(){return{......
  • nextjs使用prisma连接MySQL
      第一步npminstall@prisma/client 第二步npxprismainit 生成了文件 第三步,修改文件内容 第四步 第五步测试一下,执行npxprismadbpull我里面有一个user表的,拉下来这样显示了 ......
  • javascript node.js , java jvm , jdk, jre 的理解。
    网上的截图: 来看看node.js     再来看看java.     ......
  • C++U3-第10课-排序进阶(归并、快排)
    归并排序是一种经典的排序算法,适用于各种不同场景和数据类型的排序需求。它具有以下使用背景和优势:通用性:归并排序适用于各种不同类型的数据结构和数据类型,包括数组、链表、字符串等。它可以对任意长度的序列进行排序。稳定性:归并排序是一种稳定的排序算法,即在排序过程中相......
  • js将数据转为菜单,一个for?
    letdata=[{id:'02',lable:'产品leader',pid:'01'},{id:'03',lable:'UIleader',pid:'01'},{id:'07',lable:'产品经理',pid:'02'},{id......
  • js爬取网页table数据
    result=""for(vari=2;i<=100;i++){varxpath='//*[@id="app"]/div/div[3]/div[1]/div[3]/div/div[2]/div/div[1]/div[1]/div/div/div/div/div/div/div[2]/table/tbody/tr['+i+']/td[4]/div[1]/span[1]/span/a......
  • js自动缩放页面自适应屏幕分辨率
    1.简单版:s=window.screen.width/1920;document.body.style.zoom=s;2. 当开发前端页面在分辨率1920的情况下,需要切换到小屏,有种方法是可以对屏幕比例进行缩放,通过css3属性transform可以自适应屏幕分辨率大小vars;functionresize(){s=window.screen.width......