
数据结构
文章平均质量分 54
zwwhsxq
思路是在写作的过程中产生的,2022年,我要多学多写
展开
-
数据结构与算法之美(二) 数组
一、定义数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。1、什么是线性表:数据排成一条线,每个线性表上的数据最多只有前后两个方向。数组、链表、队列、栈均为线性表结构。与之对应的非线性表结构包括:二叉树、堆、图等。2、连续的内存空间+相同类型的数据,保证了数组具有“随机访问”的特性。二、如何实现随机访问?以一个长度为10的int型的数组int[] a = new int[10]为例,计算机给数组a分配了一块连续的内存空间1000~1039,其中原创 2022-06-12 17:23:25 · 161 阅读 · 0 评论 -
数据结构与算法之美(一) 概述&复杂度
一、定义数据结构是一组数据的存储结构,常用的10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树。算法是操作数据的一组方法,常用的10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,也就是空间复杂度和时间复杂度都尽可能小。......原创 2022-03-09 22:54:26 · 258 阅读 · 0 评论 -
字典与hash表
为什么使用dictionary进行查找时,时间复杂度为o(1)?---》 存储位置=hash(键)在查找时,首先对键进行hash运算,把求得的值当做“键-值对”的存储位置,在结构中按照此位置取“键-值对”进行比较,若键相等,则表示搜索成功。在存储“键-值对”的时候,依照相同的hash函数计算存储位置,并按此位置存放,这种方法就叫做哈希方法,也叫做散列方法。在哈希方法中使用的转换函数hash被称作哈...转载 2018-05-25 09:31:51 · 3230 阅读 · 0 评论 -
二叉树的先序中序后序遍历(非递归)
来自牛客网直通BAT算法精讲:弹出栈顶并打印,先压右后压左原创 2017-12-16 21:39:16 · 327 阅读 · 0 评论 -
快速排序
转自http://developer.51cto.com/art/201403/430986.htm快速排序有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来转载 2017-12-13 12:10:51 · 214 阅读 · 0 评论 -
leetcode486动态规划&playerAB从数组两端挑数字,求最大player
题目大意:给一个整型数组nums,两个人依次从数组中的头或者尾拿一个数,判断是否player1拿到的总数大于或者等于player2~如果是就返回true,否则返回false~在动态规划问题中,需要考虑的是,怎么把一个问题分解成递归的子问题,然后找到这个递归表达式这道题的关键思路在于:1、我们不需要去考虑玩家A拿到的数字总和究竟是多少,只要他大于玩家二即可。2、这个问题应原创 2017-11-21 12:06:01 · 2024 阅读 · 0 评论 -
数据结构——四种基本的数据存储结【顺序存储】【链接存储】【索引存储】【哈希存储】
转自:http://www.cnblogs.com/fengty90/p/3768826.html存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。顺序结构和链接结构适用在内存结构中。索引结构和散列结构适用在外存与内存交互结构。顺序存储:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。转载 2017-11-03 22:11:48 · 2645 阅读 · 0 评论 -
数据结构——前缀树 后缀树 后缀数组
前缀树:http://www.cnblogs.com/luosongchao/p/3239521.html后缀树:http://www.cnblogs.com/gaochundong/p/suffix_tree.html#undefined后缀数组:https://zhuanlan.zhihu.com/p/21283102转载 2017-11-03 17:55:35 · 434 阅读 · 0 评论 -
数据结构笔记-————归并排序
转自:http://www.cnblogs.com/chengxiao/p/6194356.html归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。下图是归并排序的一个总转载 2017-11-03 09:57:06 · 235 阅读 · 0 评论 -
数据结构笔记————堆排序
为什么堆排序构建堆的时间复杂度是N,而重调堆的时间复杂度是logN?建堆:假如有N个节点,那么高度为H=logN,最后一层每个父节点最多只需要下调1次,倒数第二层最多只需要下调2次,顶点最多需要下调H次,而最后一层父节点共有2^(H-1)个,倒数第二层公有2^(H-2),顶点只有1(2^0)个,所以总共的时间复杂度为s = 1 * 2^(H-1) + 2 * 2^(H-2) + ...转载 2017-11-02 20:16:31 · 264 阅读 · 0 评论