数据结构与算法探究
使用java语言详细的分析每一个数据结构的优劣点,以及每一个数据结构的优化过程,希望能够帮助一下刚入门的程序员们
秋千不会坠
啦啦啦
展开
-
数据结构篇——常见排序算法核心思想简单梳理
排序算法核心思想总结emmm 写的比较简单,不适合新手看。适合已经手写过一遍的人复习用。冒泡排序核心思想两个循环让最小的数一直往上移动最小的,第二小的。。。循环到最后就已经排好序了选择排序核心思想找出数组中最小的一个数与数组中第一个交换以此类推,找第二个。。。循环到整个数组结束插入排序核心思想把数组看做左右两份。左边是有序的,右边是无序的。从左向右遍历右数组(...原创 2020-03-23 23:08:04 · 629 阅读 · 0 评论 -
数据结构篇——数组扩展(稀疏数组)
其实稀疏数组更多的是一种思想,而不是一种全新独立的数据结构。它本质上也就是一个二维数组。稀疏数组简介以及应用场景当一个数组容量很大,但是其中有效数据很少且是稀疏分布时,我们就可以使用稀疏数组来减少不必要的内存消耗。注:这里的有效数据,也可以理解为与绝大部分数据不同的。加上这个理解后,稀疏数组的应用场景会多很多。其实思想很简单,构建出来一个二维数组,然后把有效数据的坐标都一一标记出来放进二维...原创 2020-02-22 14:42:21 · 270 阅读 · 0 评论 -
数据结构篇——栈扩展(计算器,前中后缀表达式)
上一篇博客我们讲了队列的扩展应用,本篇我们再来分析一下栈的一些应用。计算器说到栈的应用,最经典的就是计算器的实现了。对于给定的一个算数表达式,我们需要输出它的最终结果。例如:对于输入(10+2-5)*(30/6) 我们需要输出35分析过程对于一个计算表达式,我们需要考虑运算符的优先级,还要考虑括号。按照我们人类的计算思路,会把要先运算的算好再与其他继续运算。例如: 1+2*...原创 2020-02-22 14:18:47 · 547 阅读 · 0 评论 -
数据结构篇——队列扩展(环形链表解决约瑟夫问题)
上一篇我们详细的讲了包,栈,队列的高性能实现方案。本篇博客,我们一起来讨论一下栈和队列的扩展应用。循环队列顾名思义,循环队列就是一个首尾相连的队列。我们可以在写之前总结出它的一些特点。根据首尾相连,则在逻辑上必有两个指针分别指向头和尾,且尾的下一个就是头;根据首位相连,则该队列必定是长度固定的;根据我们前篇博客,链表相较于数组在队列的实现上优势较为明显。如果使用链表来实现,则在这里链表...原创 2020-02-20 20:37:15 · 929 阅读 · 0 评论 -
数据结构篇——包(bag),栈(stack),队列(queue)
前言本篇博文想要介绍的是三种功能单一且最为基础的数据结构:包,栈,队列。相信阅读此篇博客的大部分读者都能够手撕或者直接口述出这三种数据结构的实现方法。本篇博文将会从一般实现方式入手,通过分析优劣点来进一步优化三种数据结构的实现方法。包,栈,队列的简介正如前言中所说。包,栈,队列是功能单一的数据结构。包:一种只能塞值不能取值的结构。即这个类对外暴露的api永远只有add(),没有get()。...原创 2020-02-18 20:46:20 · 2224 阅读 · 0 评论