草庐IT

【排序算法 上】带你手撕常见排序 (插入,希尔,选择,堆排序) (动图详解)

欢迎来到Claffic的博客 💞💞💞“东风随春归,发我枝上花。”前言: 排序是日常生活中极其常见的一种算法,它的功能很简单,就是将数字按照升序/降序排列,最终形成一组有序的数字,不过形成有序数字的过程有多种实现方式,它们各有好坏,接下来,由我带你手撕排序算法。目录🥰写在前面 💐Part1.插入排序 1.1直接插入排序1.1.1思想1.1.2实现 1.2希尔排序1.2.1思想1.2.2实现🌺Part2:选择排序 2.1选择排序2.1.1思想2.1.2实现2.2堆排序2.2.1思想2.2.2实现 写在前面 排序离我们的生活很近,这是一种很重要的算法,比如:网上购物按价格升序排序世界500强排名 排

【JavaScript】手撕前端面试题:寄生组合式继承 | 发布订阅模式 | 观察者模式

🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬🖥️NodeJS专栏:Node.js从入门到精通🖥️博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)🖥️TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结)👉你的一键三连是我更新的最大动力❤️!文章目录1、寄生组合式继承要求思路代码2、发布订阅模式要求思路代码3、观察者模式要求思路代码1、寄生组合式继承要求补全JavaScript代码,要求通过寄生组合式继承使"Chinese"构造函数继承于"Human"构造函数。要求如下:给"Human"构造函数的原型上添加"getName"

【JavaScript】手撕前端面试题:寄生组合式继承 | 发布订阅模式 | 观察者模式

🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬🖥️NodeJS专栏:Node.js从入门到精通🖥️博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)🖥️TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结)👉你的一键三连是我更新的最大动力❤️!文章目录1、寄生组合式继承要求思路代码2、发布订阅模式要求思路代码3、观察者模式要求思路代码1、寄生组合式继承要求补全JavaScript代码,要求通过寄生组合式继承使"Chinese"构造函数继承于"Human"构造函数。要求如下:给"Human"构造函数的原型上添加"getName"

八大链表OJ笔试题带你手撕单链表

八大链表OJ题带你手撕单链表1.移除链表元素方法一:(不带哨兵位的)方法二:(带哨兵位的)2.反转链表方法一:(三个指针反转方向)方法二:(头插法)3.链表的中间节点4.链表中倒数第k个结点5.合并两个有序链表6.链表分割方法一:(带哨兵位的)方法二:(不带哨兵位的)7.链表的回文结构8.相交链表1.移除链表元素方法一:(不带哨兵位的)代码:需要考虑的情况:正常情况链表连续几个节点存储的值都是val链表最开始的节点存储的值是val图示:正常情况:(经画图之后,正常情况能够处理链表中连续几个节点存储的值都是val的情况)头节点存储值为val的情况:structListNode*removeEle

数据结构---手撕图解堆的实现和TopK的应用

文章目录重要的概念树的存储方式顺序存储链式存储堆的概念堆的实现向上调整算法一些实现过程中的技巧实现搭建堆实现出堆的操作向下调整算法堆排序TopK重要的概念要讲到堆,先要说两个关于二叉树的概念满二叉树:一个二叉树如果每一层的节点数都是最大值,那么这个二叉树就是满二叉树完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是满二叉树的变形,对于深度为k的树有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号从1至n的节点上面所展示的就是满二叉树和完全二叉树树的存储方式顺序存储任何一个数据结构在内存中都要以一定的方式存储起来,那么具体如何存储起来?有下面的规则首先是顺序存储,也就是用

[数据结构 -- 手撕排序第三篇] 冒泡排序

目录1、常见的排序算法1.1交换排序基本思想2、冒泡排序的实现2.1基本思想2.2单趟排序2.2.1单趟排序分析2.2.2单趟排序实现代码3、冒泡排序完整代码实现3.1思路分析3.2代码实现4、时间复杂度5、优化算法5.1优化算法思路5.2优化算法代码实现6、冒泡排序的特性总结1、常见的排序算法1.1交换排序基本思想冒泡排序属于交换排序之一,我们先来了解以下冒泡排序思想。基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。2、冒泡排序的实现2.1基本思想我们本篇讲冒泡排序以排

数据结构---手撕顺序表---顺序表增删查改寻找功能的实现

文章目录顺序表前言顺序表要实现的功能定义顺序表顺序表初始化顺序表的销毁打印顺序表顺序表的尾插顺序表的头插顺序表的头删顺序表的尾删顺序表定向位置查找顺序表前言顺序表作为数据结构的入门知识,整体知识较为简单,主要对动态内存开辟结构体指针有要求,其余难度较低顺序表要实现的功能顺序表主要需要实现的有顺序表的增删查改和定向搜索销毁等,具体实现函数如下//对数据的管理:增删查改voidSeqListInit(SeqList*ps);voidSeqListDestroy(SeqList*ps);voidSeqListPrint(SeqList*ps);voidSeqListPushBack(SeqList*

[数据结构 -- 手撕排序第二篇] 一篇带你详细了解希尔排序

目录1、常见排序算法1.1插入排序基本思想2、希尔排序2.1希尔排序(缩小增量排序)2.1.1预排序阶段2.1.2插入排序阶段2.2单趟希尔排序2.2.1思路分析2.2.2代码实现3、希尔排序代码实现4、希尔排序时间复杂度5、希尔排序与插入排序效率对比6、希尔排序特性总结1、常见排序算法1.1插入排序基本思想直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。实际中我们玩扑克牌时,就用了插入排序的思想 2、希尔排序2.1希尔排序(缩小增量排序)希尔排序法又称缩小增量法。希尔排序法

【手撕面试题】JavaScript(高频知识点三)

目录面试官:什么是防抖和节流,他们的应用场景有哪些?面试官:js中什么是可选操作符,如何访问数组?面试官:请简述一下eventloop面试官:请简述node/v8中的垃圾回收机制面试官:如何删除项目中没有使用到的package?面试官:请你谈谈js中在new的时候发生了什么?面试官:浏览器的剪切板中如何监听复制事件?面试官:如何实现页面文本不可复制?面试官:异步加载JS脚本时,async与defer有何区别?面试官:前端如何实现文件上传功能?        每天10道题,100天后,搞定所有前端面试的高频知识点,加油!!!,在看文章的同时,希望不要直接看答案,先思考一下自己会不会,如果会,自己

【手撕面试题】JavaScript(高频知识点三)

目录面试官:什么是防抖和节流,他们的应用场景有哪些?面试官:js中什么是可选操作符,如何访问数组?面试官:请简述一下eventloop面试官:请简述node/v8中的垃圾回收机制面试官:如何删除项目中没有使用到的package?面试官:请你谈谈js中在new的时候发生了什么?面试官:浏览器的剪切板中如何监听复制事件?面试官:如何实现页面文本不可复制?面试官:异步加载JS脚本时,async与defer有何区别?面试官:前端如何实现文件上传功能?        每天10道题,100天后,搞定所有前端面试的高频知识点,加油!!!,在看文章的同时,希望不要直接看答案,先思考一下自己会不会,如果会,自己