首页 > 编程语言 >前端算法小白日刷三题13

前端算法小白日刷三题13

时间:2024-12-16 11:56:24浏览次数:14  
标签:13 right arr mid 白日 length let left 刷三题

今天主要学归并排序、快速排序和二分查找

归并排序

//归并排序
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)

    function merge(left, right) {
        let result = []
        console.log(left, right)
        while (left.length && right.length) {
            result.push(left[0] < right[0] ? left.shift() : right.shift())
        }
        return result.concat(left, right)
    }
    return merge(mergeSort(arr.slice(0, mid)), mergeSort(arr.slice(mid)))
}

console.log(mergeSort([3, 1, 4, 1, 5, 9, 2, 6]));

 

快速排序 

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

console.log(quickSort([3, 4, 2, 1, 5]));

二分查找

//二分查找

function binarySearch(arr, target) {
    let start = 0
    let end = arr.length - 1
    while (start <= end) {
        let mid = Math.floor((start + end) / 2)
        if (arr[mid] == target) {
            return mid
        }
        if (arr[mid] > target) {
            end = mid
        }
        if (arr[mid] < target) {
            start = mid + 1
        }
    }
    return -1
}

console.log(binarySearch([1, 2, 3, 4, 5], 3));

今天的内容就到这里啦,明天继续 

标签:13,right,arr,mid,白日,length,let,left,刷三题
From: https://blog.csdn.net/2301_80195301/article/details/144501762

相关文章

  • 2024-2025-1 20241316 《计算机基础与程序设计》第十二周学习总结
    2024-2025-120241316《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业的目标无作业正文...本博客链接教材学习内容总结一、文件概述文件概念解释文件是存储在外部介质(如磁盘)上的数据......
  • 2024-2025 20241312计算机基础与程序设计》第十二周学习总结
    学期(如2024-2025-1)学号(:20241312)《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第十二周作业)这个作业的目标加......
  • # 2024-2025-1 20241325 《计算机基础与程序设计》第12周学习总结
    2024-2025-1学号20241325《计算机基础与程序设计》第12周学习总结作业信息|这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP||-- |-- ||这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12|这个作业的目标|<加入云班课,参考......
  • 题解:P11372 「CZOI-R2」加训
    暴力三重循环,枚举学生,障碍和老师,再判断是否合法。时间复杂度:\(\Theta(mxy)\)。但是会TLE。暴力优化用数组\(oier\)来存储二元组\((x,y)\)对应的坐标\(z\)。这样就省去的开三维数组的成本。然后只用枚举学生和老师,再判断维度坐标不同数是否为\(k-1\)个,以及中间有没......
  • 题解:P11319 [NOISG2020 Qualification] Cryptography
    康托展开模版给大家一个式子,这个式子就是康托展开的模版。\(rank=1+\sum_{i=1}^{n}a_n\times(n-i)!\)然后我们对这个排列\(P\)进行离散化,最后直接来个康托展开的模版就行了。代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>usi......
  • 题解:P11389 [COCI 2024/2025 #1] 等级 / Hijerarhija
    思路因为一棵树的本质是一个图,所以我们可以认为入度为\(0\)的节点就是这个树的根。所以我们统计有几个根,以及是已经作为根的。最后去统计有多少个根就行了。存储父子关系可以用unordered_map。代码#include<iostream>#include<cstdio>#include<cstring>#include<algori......
  • Ubuntu20.04 下 PX4_v1.13.3 安装教程
    Ubuntu20.04下PX4_v1.13.3安装教程一、简介二、下载PX4源码三、结语一、简介PX4v1.13.3是v1.13系列较为稳定的版本,推荐使用该版本的原因包括:稳定性和可靠性:v1.13.3包含了之前版本的所有功能改进和错误修复。动态控制分配:v1.13引入了动态控制分配功能,简化了......
  • 超大规模数据库集群保稳系列:数据库攻防演练建设实践13
     01背景1.1初识混沌工程首先我们先了解一下什么是混沌工程?简单而言,混沌工程是在系统上进行实验的技术手段,目的是建立对系统抵御生产环境中失控条件的能力以及信心。这主要体现在两个方面,从系统角度来讲,混沌工程可以提升我们架构的容错能力和韧性,降低故障发生率和复发率,提......
  • 2024-2025-1 20241308《计算机基础与程序设计》第十二周学习总结
    作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 指针与一维,二维数组的关系,指针数组及其应用,动态数组,缓冲区溢出攻击作业正文教材学习内容总......
  • 2024-2025-1 20241327 《计算机基础与程序设计》第十二周学习总结
    作业信息|2024-2025-1-计算机基础与程序设计)||--|-|2024-2025-1计算机基础与程序设计第十二周作业)||快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题|作业正文|https://www.cnblogs.com/shr060414/p/18440575|......