总结:大厂面试常考手撕代码——javascript排序算法(冒泡排序选择排序插入排序快速排序)(代码片段)

故里有长安丶丶 故里有长安丶丶     2022-12-01     488

关键词:

文章目录


1. 冒泡排序

 //冒泡排序
    let arr = [2, 4, 1, 6, 3]
    function bubbled(arr) 
        for (let i = 0; i < arr.length - 1; i++) 
            //【!!注意】这里不是j=i,因为回回都必须重头遍历,才能不漏一个嘛~
            for (let j = 0; j < arr.length - 1; j++) 
                if (arr[j] > arr[j + 1]) 
                    let temp
                    temp = arr[j]
                    arr[j] = arr[j + 1]
                    arr[j + 1] = temp
                
            
        
        return arr
    
    console.log(bubbled(arr));  //[1,2,3,4,6]

2. 选择排序

//选择排序(指挨个挨个遍历,`选择`右侧最小与之交换)
    let arr1 = [2, 4, 1, 6, 3]
    function select(arr1) 
        for (let i = 0; i < arr1.length - 1; i++) 
            let min = i    //保存右侧最小值的下标
            for (let j = i + 1; j < arr1.length; j++) 
                if (arr1[j] < arr1[min]) 
                    //【!!注意】:这里每次循环保存相对较小值的下标
                    min = j
                
            
            if (arr1[min] < arr1[i]) 
                let temp;
                temp = arr1[min]
                arr1[min] = arr1[i]
                arr1[i] = temp
            
        
        return arr1
    
    console.log(select(arr1));  //[1,2,3,4,6]

3. 插入排序


    //插入排序
    let arr2 = [2, 4, 1, 6, 3]
    function Ins(arr2) 
        let temp  //专门用于保存作为比较的i项
        for (let i = 1; i < arr2.length; i++) 
            while (i > 0 && arr2[i] < arr2[i - 1]) 
                temp = arr2[i]     //先对后面的值保存一下,因为这个值还要跟前面做对比啊! 你看下一步就要把后面的值覆盖了
                arr2[i] = arr2[i - 1]

                arr2[i - 1] = temp
                i--;
            
        
        return arr2
    
    console.log(Ins(arr2))  //[1,2,3,4,6]

4. 快速排序

快速排序算法的基本思想是:


  • 从数组中取出一个数,称之为基数(pivot)

  • 遍历数组,将比基数大的数字放到它的右边,比基数小的数字放到它的左边。遍历完成后,数组被分成了左右两个区域

  • 将左右两个区域视为两个数组,重复前两个步骤,直到排序完成

let arr3 = [2, 4, 1, 6, 3]
    function fast(arr3) 
        if (arr3.length <= 1) return arr3; //【!!!注意】:这一句必须加上,因为有时候递归回来可能左边数组只有一个元素(或空数组),这时直接返回arr ,结束left递归,让它去递归right

        let left = [];
        let right = [];
        let pivot = arr3[0]
        for (let i = 1; i < arr3.length; i++) 
            if (arr3[i] < pivot) 
                left.push(arr3[i])
             else 
                right.push(arr3[i])
            
        
        return fast(left).concat([pivot], fast(right))
    
    console.log(fast(arr3));   //[1,2,3,4,6]

java常考面试题总结(代码片段)

列出一些你常见的运行时异常?答:常见的几种运行时异常如下:ArithmeticException(算术异常)ClassCastException(类转换异常)IllegalArgumentException(非法参数异常)IndexOutOfBoundsException(下表越界异常)NullPointerException(空指针异常... 查看详情

javascript手撕前端面试题:手写object.create|手写function.call|手写function.bind(代码片段)

🖥️NodeJS专栏:Node.js从入门到精通🖥️博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)🖥️TypeScript知识总结:TypeScript从入门到精通(... 查看详情

javascript手撕前端面试题:事件委托|判断url是否合法|全排列(代码片段)

🖥️NodeJS专栏:Node.js从入门到精通🖥️博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)🖥️TypeScript知识总结:TypeScript从入门到精通(... 查看详情

面试前端面试常考手写题-javascript-css(代码片段)

持续更新中…文章目录1.CSS布局1.1盒子居中对齐1.2两栏布局1.3三栏布局双飞翼圣杯1.4品字布局2.JS手写函数2.1手写原生PromisePromise.allPromise.racePromise.resolve()Promise.reject()callapplybindnewinstanceof2.2自定义函数数组去重数组扁平化深拷贝深... 查看详情

关于块级元素和行内元素的总结(面试常考)(代码片段)

...本文主要是对这两者的概念、区别以及转换做一个梳理和总结目录一、前言二、块级元素     1、块级元素的定义     2、块级元素的特点     查看详情

手撕前端面试题javascript(代码片段)

🍖🍖作者:不良使🍖🍖🍖🍖潜力创作新星华为云享专家博主🍖🍖🍖🍖🍖Python+Android🍖🍖🍖🍖🍖🍖博客 查看详情

手撕前端面试题javascript(代码片段)

前端的那些基本标签🍓🍓浅拷贝🍓🍓简易深拷贝🍓🍓深拷贝🍓🍓什么是深拷贝,什么是浅拷贝,二者有什么区别,平时改怎么区分呢?💖💖js中不同类型存放的位置不... 查看详情

javascript手撕前端面试题:手写new操作符|手写object.freeze(代码片段)

🖥️NodeJS专栏:Node.js从入门到精通🖥️博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)🖥️TypeScript知识总结:TypeScript从入门到精通(... 查看详情

手撕专有钉钉android面试题完全指南

...建立起自己的知识体系。本篇文章是笔者花费近一年时间总结收集的Android面试题。主要涵盖两块内容:Java基础部分和A 查看详情

javascript面试题总结(附答案)-蛙课网

...答案,以供有面试需要的java程序员学习使用。1、什么是JavaScript?答:JavaScript是客户端和服务器端脚本语言,可以插入到HTML页面中,并且是目前较热门的Web开发语言。同时,Jav 查看详情

计算机网络常考面试题总结

这里先将搜集到的题目列出来,日后一一精细得写完。https://blog.csdn.net/u013408431/article/details/62442670https://blog.csdn.net/tzs_1041218129/article/details/52134226https://blog.csdn.net/GitChat/article/details/78546898< 查看详情

大厂面试预备篇——《两万字mysql基础总结》❤️建议收藏(代码片段)

...生📚《大厂面试突击》——面试10多家中大厂的万字总结📚《技术专家修炼》——高薪必备,企业真实场景📚《leetcode300题》——每天一道算法题,进大厂必备📚《糊涂算法》——数据结构+算法全面... 查看详情

2022最新版redis大厂面试题总结(附答案)

...​​文章已收录​​,主要包含的技术有PHP、Redis、MySQL、JavaScript、HTML&CSS、Linux、Java、Golang、Linux和工具资源等相关理论知识、面试题和实战内容。文章导语大家好,前段时间一直在忙找工作相关的事情。最近工作稳定了,于... 查看详情

2021年大厂面试高频架构题汇总(附答案详解)

...备。这里必须要和大家再强调一下要准备的7大方面!总结起来包括:1至2门你最熟悉的编程语言+数据结构和算法题+计网+操作系统+设计模式+数据库+开发框架。为了帮助每一个想顺利通过架构面试的朋... 查看详情

面试10多家中大厂后的万字总结——java基础篇(干货总结,必须收藏)(代码片段)

...欢迎订阅《大厂面试突击》专栏,面试10多家中大厂总结出的高频面试知识,仅前50名免费⭐早晨的阳光和傍晚的落日,是你努力奔跑的背景色前言哈喽,大家好,我是一条。(不好意思,让大家久等了,... 查看详情

必知必会面试10多家中大厂后的两万字总结——❤️jvm篇❤️(建议收藏)(代码片段)

...人生⭐🌲往期回顾📚面试10多家中大厂后的万字总结——❤️Java基础篇❤️📚面试10多家中大厂后的万字总结——❤️JavaWeb篇❤️📚面试10多家中大厂后的万字总结——❤️集合篇❤️📚如何设计百万人抽... 查看详情

九章算法总结java搞定链表-面试常考题目精选

面试大总结之链表CS3K.com一、OverView:链表是面试中常考的,本文参考了其它一些文章,加上小编的自己总结,基本每个算法都测试并优化过。算法大全(1)单链表中还有一些链表题目,将来也会整理进来。这些题目虽然简单,但... 查看详情

大厂必考深度学习算法面试题总结(代码片段)

目录目录一,滤波器与卷积核二,卷积层和池化输出大小计算三,深度学习框架的张量形状格式四,Pytorch、Keras的池化层函数理解五,Pytorch和Keras的卷积层函数理解六,softmax回归七,交叉熵损失函数八,感受野理解九,卷积和... 查看详情