算法之【排序】
排序的概述排序算法 常用的: 冒泡排序 插入排序 选择排序 归并排序 快速排序 计数排序 基数排序 桶排序 不常用的: 猴子排序 睡眠排序 面条排序 排序算法分类 按照时间复杂度进行分类 冒泡、插入、选择 : O(n...
排序的概述排序算法 常用的: 冒泡排序 插入排序 选择排序 归并排序 快速排序 计数排序 基数排序 桶排序 不常用的: 猴子排序 睡眠排序 面条排序 排序算法分类 按照时间复杂度进行分类 冒泡、插入、选择 : O(n...
递归(Recursion)概述概念 递归是一种算法,也是一种编程技巧,应用非常广泛。 递归求解问题的分解过程:去的过程叫“递”,回来的过程叫“归” 应用:DFS深度优先搜索、前中后序二叉树遍历 优缺点: 优点: 递归代码表达能力强,写起来简洁 ...
问题向导 问题1:如何实现浏览器的前进和后退功能? 问题描述:浏览器的前进、后退功能,我想你肯定很熟悉吧?当你依次访问完一串页面 a-b-c 之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面 b 和 a。当你后退到页面 a,点击前进按钮,就可以...
问题向导 问题1:线程池没有空闲线程时,新的任务请求 线程资源时,线程池该如何处理?各种处理策略又是如何实现的呢? 思路: 处理策略一:非阻塞的处理方式,直接拒绝任务请求 处理策略二:阻塞的处理方式,将请求排队,等到有空闲线程时,取出排队的请求继续处...
问题向导: 问题1:如何实现LRU缓存淘汰算法? 思路: 维护一个有序的单链表,越靠近链表尾部的结点是越早之前访问的,当有一个新的数据被访问时,从链表头开始顺序遍历链表。 实现: 如果在此数据之前已经被缓存在链表中了,遍历得到这个数据对应的结...
概念与原理数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。数组可以分为静态数组和动态数组两大类。 静态数组:是一块连续的内存空间,我们可以通过索引来访问这块内存空间中的元素,这也是数组的原始形态。 动态...
数据结构的分类常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从逻辑结构和物理结构两个维度进行分类。 逻辑结构:线性与非线性逻辑结构主要描述的是数据元素之间的逻辑关系,它可以分为线性和非线性两大类。简言之,线性结构指数据在逻辑关系...
在工程领域中,大量问题是难以达到最优解的,许多问题只是被“差不多”的解决了。问题的难以程度一方面取决于问题本身的性质,另一方面也取决于观测问题的人的只是储备。人的知识越完备,经验越多,分析问题就会越深入,问题就能被解决的更优雅。 ——摘录 在前面...
写在前面数据结构与算法常被视为一个整体,但它其实是由「数据结构」和「算法」两部分构成。我们很少见到有人将他们完全分开讲解,正是因为二者相辅相成、密不可分:数据结构是为算法的服务的,而算法总要作用在某种特定的数据结构之上。 此外值得注意的是,算法工程师...
在AI编程助手高速演进时代,我们每天都在坚持技术的飞跃。然而,越是在浪潮之巅,我越发意识到—真正可持续的成长,依然离不开坚实的技术根基。 根基无声,却能支撑我们走向更远的未来…… 因此,我从今天(2025.08.31)起,启动一项为期31天的专项计划...