首页 > 其他分享 >今日学习之二分法排序

今日学习之二分法排序

时间:2023-03-06 18:46:12浏览次数:35  
标签:学习 arr rightArr center 二分法 leftArr 排序

二分法排序主要思想是在数组中截取一个数center,然后将数组分成leftArrrightArr两部分,其中leftArr全部小于centerrightArr全部大于center(这里没有考虑有重复值的情况),最后递归leftArrrightArr,如下图所示:

具体代码如下:

let arr = new Array(9, 4, 21, 5, 675, 3, 212, 43)
function dichotomySort(arr) {
  let len = arr.length
  if (len <= 1) return arr  // 此长度小于等于1的数组不能继续往下执行
  let leftArr = [],
    rightArr = []
  let middle = Math.floor((len - 1) / 2)
  let center = arr.splice(middle, 1)
  for (let i = 0; i < len - 1; i++) {
    let target = arr[i]
    target < center ? leftArr.push(target) : rightArr.push(target)
  }
  return dichotomySort(leftArr).concat(center, dichotomySort(rightArr))
}
let newArr = dichotomySort(arr)  //  [3, 4, 5, 9, 21, 43, 212, 675]

如有不对之处请多多指教,可发送邮箱[email protected]

标签:学习,arr,rightArr,center,二分法,leftArr,排序
From: https://www.cnblogs.com/lc-meng/p/17184943.html

相关文章

  • Python学习_1
    1——在Python3.x中可以使用中文作为变量名/方法/变量2——Python变量使用前必须赋值而非声明类型,变量赋值以后该变量才会被创建。3——Python运算符%不仅可以用来求余......
  • 吴恩达学习笔记6(logistic regression)
    2023-03-0616:54:15星期一接下来讨论y是离散值情况下的分类问题分类问题举例此时y是有两个取值的变量:0or10表示负类:没有某个东西1表示正类:有某个东西开发一......
  • 基于GD32F407单片机与循环队列的BIT上报学习记录
    c文件staticuint8_trx_buf[MAX_485_RX_LEN]={0};staticuint8_trx_buf_data_cnt=DATA;staticuint8_trs485TXBuf[MAX_485_RX_LEN]={0};usart_device_tusart......
  • 【专题】深度学习平台发展报告(2022年)PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=31689原文出处:拓端数据公众号深度学习平台市场目前正经历着巨大的增长阶段。头部企业通过整合算力、研发、部署、行业应用等AI服务能力,布局......
  • 系统化学习前端之vite
    前言”天下苦webpak久矣“。webpack虽然解决了前端工程化的问题,但是webpack编译打包过程中自身性能的问题随着项目代码的增长逐渐暴露出来,老前端们开始追求开发体验和......
  • django学习
    1.准备工作需要安装Django包需要启动mysql服务,并创建一个数据库需要安装pymysql服务,代码如下:pipinstallpymysql==版本创建Django项目新建django项目出......
  • mysql 学习笔记
    一、数据库命令行操作登录mysql-hip地址-u用户名-p密码2.修改密码alteruser'root'@'localhost'identifiedby'密码';3.退出exit4.开启mysql服务netsta......
  • 字符串排序III【北京大学考研机试题】
    字符串排序III按要求输入字符串进行排序并输出。输入格式输入包含多组测试数据。每组测试数据,第一行包含整数N,表示共有N个字符串。接下来,会将这N个字符串,按一行......
  • 微信小程序校园购物学习笔记
    在第二大学远程实习中学习校园购物的学习笔记1.轮播图轮播图是在网购页面最常见的效果,可以轮换播放图片,或者由用户手动切换。使用swiper滑动视图容器进行制作,其中常用属......
  • Vue学习笔记之ElementUI的区间设置
    <template><divclass="app-containerhome"><el-formref="form":inline="true":model="form":rules="rules"><el-form-itemprop="min"><el......