数据结构与算法学习笔记
文章平均质量分 89
本篇专栏主要的记录自己在学习数据结构与算法的过程中的一些总结和思考。
Serena丶
热爱技术、热爱生活、努力拼搏。
展开
-
数据结构与算法——快速排序
1、归并排序与快速排序使用的都是分治的思想,代码通过递归实现。理解归并排序的重点是理解递推公式和merge() 合并函数。理解快排的重点也是理解递推公式和partition() 分区函数。2、归并排序算法是一种在任何情况下时间复杂度都比较稳定的排序算法,但也存在致命的缺点,即归并排序并不是原地排序算法,空间复杂度比较高,是O(n),因此并没有快排应用广泛。3、快速排序算法虽然最坏情况下的时间复杂度是O(n2),但平均情况下时间复杂度都是O(nlogn)。原创 2023-05-11 22:49:58 · 226 阅读 · 0 评论 -
数据结构与算法——归并排序
归并排序的实现与分析原创 2023-05-10 12:34:35 · 399 阅读 · 0 评论 -
数据结构与算法——选择排序
选择排序算法的实现思路与插入排序类似,也将数据分为已排序区间和未排序区间两部分。但选择排序每次会从未排序的区间中找到最小的元素,将其放到已排序区间的末尾。// 选择排序,arr表示数组,n表示数组大小 public static void selectionSort(int [ ] arr , int n) {i < n - 1;++ i) {// 查找最小值 int minIndex = i;j < n;++ j) {} } // 交换 int tmp = arr [ i ];原创 2023-05-08 13:50:12 · 71 阅读 · 0 评论 -
数据结构与算法——插入排序
主要介绍插入排序的实现与插入排序的分析。原创 2023-05-07 11:51:54 · 569 阅读 · 0 评论 -
数据结构与算法——冒泡排序
本篇主要是介绍冒泡排序的实现以及冒泡排序的分析。原创 2023-05-06 19:46:02 · 800 阅读 · 0 评论 -
数据结构与算法——排序概览
主要对排序算法进行一个概览以及如何去分析一个排序算法。原创 2023-05-06 17:57:23 · 74 阅读 · 0 评论 -
数据结构与算法——队列
1、队列的最大特点为先进先出,其主要的两个操作是入队和出队。2、队列即可以用数组实现,也可以用链表实现。用数组实现的叫顺序队列,用链表实现的叫链式队列。在数组实现队列的时候,会有数据搬移操作,要想解决数据搬移的问题,我们就需要像环一样的循环队列。3、循环队列,它长得像一个环。当数组实现队列时,将首尾相连,连接成一个环,形成环型的循环队列。实现循环队列代码的关键在于确定好队空和队满的判定条件。4、对于大部分资源有限的场景,当没有空闲资源时,基本上都可以通过“队列”这种数据结构来实现请求排队。原创 2023-04-28 00:04:26 · 363 阅读 · 0 评论 -
数据结构与算法——栈
1、栈的概念后进者先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。2、栈的特点当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,这时就应该首选“栈”这种数据结构。3、栈的实现实际上,栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈。4、栈的时间、空间复杂度不管是顺序栈还是链式栈,我们存储数据只需要一个大小为 n 的数组就够了。原创 2023-04-24 22:07:42 · 180 阅读 · 0 评论 -
数据结构与算法——链表(二)
前面的代码就不可行了。跟插入类似,我们也需要对于这种情况特殊处理。原创 2023-04-23 11:53:17 · 79 阅读 · 0 评论 -
数据结构与算法——链表(一)
1、缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。2、常见的三种缓存淘汰策略:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策略 LRU(Least Recently Used)3、链表在底层存储上,并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用。链表通过指针将一组零散的内存块串联在一起。原创 2023-04-22 15:06:13 · 152 阅读 · 0 评论 -
数据结构与算法——数组
1、数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。其特点有两种,一是线性表,数据排成像线一样的结构,二是使用连续的存储空间存放相同的数据类型。因而这两个特点,数据能够实现“随机访问”。其中,base_address 为首地址,data_type_size 表示数组中每个元素的大小。3、数组中存在低效插入的情况,当需要将数据插入到数组的第k个位置时,需要将第 k~n 这部分的元素都顺序地往后挪一位。原创 2023-04-20 23:40:45 · 331 阅读 · 0 评论 -
数据结构与算法——复杂度分析(一)
本专栏是学习王争老师的《数据结构与算法之美》的学习总结,详细内容可以去学习王争老师的专栏,希望大家都能够有所收获。同时也欢迎大家能够与我一起交流探讨!数据结构和算法本身解决的问题是“快”和“省”的问题,即**如何让代码运行得更快,如何让代码更省存储空间。**所以,代码的执行效率是算法一个非常重要的考量指标。原创 2023-04-19 00:04:09 · 184 阅读 · 0 评论 -
数据结构与算法——复杂度分析(二)
同一段代码,在不同输入的情况下,复杂度量级有可能是不一样的。最好情况时间复杂度最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度同一段代码在不同情况下时间复杂度会出现量级差异,为了更全面,更准确的描述代码的时间复杂度,所以引入这4个概念。代码复杂度在不同情况下出现量级差别时才需要区别这四种复杂度。大多数情况下,是不需要区别分析它们的。其中,平均时间复杂度是代码在不同情况下复杂度出现了量级差别,用代码所有可能情况下爱执行次数的加权平均值表示。原创 2023-04-20 09:13:14 · 286 阅读 · 0 评论 -
数据结构与算法学习总结开篇
广义上,数据结构指一组数据的存储结构。算法就是操作数据的一组方法。例如,图书馆存放书籍,为了方便查找需要的书籍,图书管理员一般会将书籍分门别类进行存储。按照一定规律编号,就是书籍这种“数据”的存储结构。当需要查找一本书时,可以有许多的方法,例如可以一本一本地找,也可以先根据书籍类别的编号,是人文,还是科学、计算机,来定位书架,然后再依次查找。笼统地说,这些查找的方法都是算法。狭义上,指的是某些著名的数据结构与算法,比如队列、栈、堆、二分查找、动态规划等。数据结构和算法是相辅相成的。原创 2023-04-17 19:27:20 · 200 阅读 · 0 评论