
数据结构&算法
【原】编程界的小学生
什么都要会一点,这样装起逼来不会尴尬。
展开
-
数据结构与算法之插入排序
数据结构与算法之冒泡排序数据结构与算法之选择排序一、核心思想插入排序(Insertion Sorting)的基本思想是:把N个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次都从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置。二、案例原始数组:{100, 34, 80, ...原创 2020-01-08 16:05:21 · 424 阅读 · 0 评论 -
数据结构与算法之选择排序
一、基本思想选择排序(select sorting)基本思想是:第一次从arr[0]arr[n-1]中选取最小值,与arr[0]交换;第二次从arr[1]arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]arr[n-1]中选取最小值,与arr[2]交换…第**i**次从arr[i-1]arr[n-1]中选取最小值,与arr[i-1]交换…,第n-1次从arr[n-2]~arr...原创 2020-01-07 14:58:52 · 322 阅读 · 2 评论 -
数据结构与算法之冒泡排序
一、概念冒泡排序(Bubble Sorting):通过对待排序序列从前往后,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素主键从前移向后部,就像水底下冒泡一样逐渐往上冒。通俗来讲就是:相邻元素对比,左边比右边大的话就换个位置,每轮对比下来就能确定一个最大值,第一轮最大值再最后位置,第二轮倒数第二大的值再倒数第二个位置上,以此类推,也就是需要对比的次数为数组长度-1,因为每次对比都能确定...原创 2019-12-30 19:03:53 · 407 阅读 · 0 评论 -
数据结构和算法之八皇后问题
一、问题描述将八位皇后放在一张8*8的棋盘上,使得每位皇后都无法吃掉别的皇后。(即任意两个皇后都不在同一条横线,竖线,斜线上),求一共能有多少种摆放的方法。二、图解问题描述假设我们放入第一个皇后,位置再第五行第四列上,那么他的同一条横线,竖线,斜线上都不能放其他皇后,如下图我们再空白处放入第二个皇后,比如位置:第四行第六列,如下图如此下去,能放下一个皇后的位置会越来越少,能同时放下...原创 2019-12-27 15:47:09 · 996 阅读 · 2 评论 -
数据结构与算法之递归实战--走迷宫
数据结构与算法之递归基础一、需求经典的迷宫问题,就是:一颗小球通过移动格子,最终要走到目的地。移动格子到目的地的这段路径就是最终的结果。但是格子有障碍物,移动的过程中遇到障碍物的话是不能继续移动的,需要换其他格子去走。如下图:二、coding1、代码实现格子思路:首先这是一个8*7的网格,用1代表障碍物。从图中可以分析出1.上下左右四面都是障碍物。也就是:第1行的第1-7列都是障...原创 2019-12-26 16:28:07 · 917 阅读 · 0 评论 -
数据结构和算法之递归
一、概念自己调用自己。二、举例1、打印问题public class RecursionTest { public static void main(String[] args) { test(4); } public static void test(int n) { if (n > 2) { test(...原创 2019-12-26 13:47:15 · 580 阅读 · 0 评论 -
数据结构和算法之二叉树
一、为什么需要树这种数据结构是因为之前的数组和链表两种存储结构对增删改查都各有利弊,而且差异明显。所以树这种结构就是增删改查效率差异不是很明显,增删改查所耗费时间都比较均衡的一种数据结构。1、数组存储方式1.1、优点通过下标方式访问元素,速度快。对于有序数组,还可以使用二分查找来提高检索速度。1.2、缺点若检索具体某个值,或插入值(按一定顺序),会整体移动。效率较低。2、链表存储...原创 2019-12-24 17:28:02 · 894 阅读 · 0 评论 -
数据结构与算法之哈希表结构
一、概念也称散列表,是指根据关键码值(key-value)而直接进行访问的数据结构,也就是说它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度,这个映射函数叫做散列函数,存放记录的数组叫做散列表,也称哈希表。二、一句话概括哈希表就是由数组和链表二者结合而成的新型数据结构。数组存放key(经过hash计算后生成的存放key的数组位置),链表存放value。三、图解hash...原创 2019-12-18 21:26:12 · 656 阅读 · 0 评论 -
数据结构与算法之环形队列
一、二、三、原创 2019-12-16 16:55:48 · 1170 阅读 · 0 评论 -
数据结构和算法之稀疏数组
一、案例五子棋程序,只有两种颜色的子,连成五个就gameover。可能一个棋盘能放下100枚棋子,但是总占用空间只有不到10个,游戏就over了。那么这样存储到本地file的话,空间是极大的浪费的。这就引出了稀疏数组。二、稀疏数组应用场景当一个数组中大部分元素都是0(或是同一个值)的时候,就可以用稀疏数组来保存此数组。三、什么是稀疏数组1、图解先有个原始数组,8*7的规模,如下2...原创 2019-12-12 15:53:49 · 440 阅读 · 0 评论 -
数据结构和算法之时间空间复杂度(下)
数据结构和算法之时间空间复杂度(上)上篇文章没看的话,这篇文章就别看了。一、知识点最好时间复杂度(best case time complexity)最坏时间复杂度(worst case time complexity)平均时间复杂度(average case time complexity)二、案例1、分析时间复杂度利用上一篇学到的知识点,分析下面这段代码的时间复杂度是多...原创 2019-12-06 09:13:28 · 1048 阅读 · 0 评论 -
数据结构和算法之时间空间复杂度(上)
一、为什么需要复杂度分析?我们不进行复杂度分析,而是把代码跑一遍,通过统计、监控就能得到算法执行时间和占用的内存大小,为什么还要做时间、空间复杂度分析呢?我将这种分析称之为事后统计法。二、事后统计法问题首先确认事后统计法确实没问题,可以很好的统计出算法的运行时间占比以及所占用的内存大小。但是存在如下两个问题:测试结果非常依赖测试环境测试环境硬件不同会对测试结果有很大影响,比如我们拿...原创 2019-12-06 08:13:20 · 938 阅读 · 0 评论 -
数据结构和算法之数组队列
一、概念顾名思义,就是用数组(array)去模拟队列(queue)。数组是有界的,所以会有数组容量(队列大小)和队列中实际元素个数两个变量,加上队列自带的队首和队尾指针,一共四个必要元素。二、图解1、描述定义一个数组容量为4的数组队列。2、入队2.1、定义空队列2.2、元素A入队2.3、元素B入队2.4、元素C入队2.5、元素D入队不难发现,队列满了,无法再添加了...原创 2019-12-03 20:27:47 · 831 阅读 · 0 评论 -
数据结构和算法之队列基本概念
一、队列是什么先进先出原创 2019-12-03 17:38:56 · 460 阅读 · 0 评论 -
1、数据结构&算法是什么、为什么、怎么学?
1、是什么数据结构指的是一组数据的存储结构,算法指的是操作数据的一组方法数据结构是为算法服务的,算法是要作用再特定的数据结构上的,所以二者是不可分割的。2、为什么熟悉算法和数据结构才能写出性能更优的代码、或者说写代码之前就会想到怎么才能写出最高效的代码,而不是一味的crud、cv大法!很好的锻炼人的思维能力,多动脑才能更灵活!面试或者和同行唠嗑的时候可以吹牛逼!3、怎么学...原创 2019-11-08 16:22:27 · 627 阅读 · 0 评论