![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
平头哥的技术博文
不忘初心,方得始终
展开
-
数据结构与算法 | 二分查找
原理二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,有点类似分治的思想。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。为了方便理解,我们以数组1, 2, 4, 5, 6, 7, 9, 12, 15, 19, 23, 26, 29, 34, 39,...原创 2019-08-12 17:31:22 · 2915 阅读 · 2 评论 -
搞编程,你必知必会的复杂度分析
在开发中,我们会经常听到关于时间复杂度、空间复杂度相关词汇,如果你没有这方面的知识,你肯定会一脸懵逼。那什么是时间复杂度、空间复杂度还有我们又怎么去分析?首先我们先来弄清楚我们为什么需要做复杂度分析。为什么需要复杂度分析?真实的时间复杂度、空间复杂度我们需要在机器上执行我们编写的代码,才能统计出我们的代码这这个环境下的真实时间复杂度、空间复杂度。这种方法统计出来的结果非常准确,但是极限性也非常...原创 2019-08-01 18:03:56 · 1322 阅读 · 2 评论 -
Java中4大基本加密算法解析
一、前言人生处世如行路,常有山水阻身前。只有品味了痛苦,才能珍视曾经忽略的快乐;人在路上走,沿途中总会有风雨不定时来袭击,不可能因为有风雨而止步或退缩。迎上风雨,勇敢面对,相信走过风雨后,彩虹的美丽就在前方的风景处等你。简单的java加密算法有:BASE64 严格地说,属于编码格式,而非加密算法MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure H原创 2017-01-07 10:39:02 · 518 阅读 · 0 评论 -
程序员,你心里就没点树吗?
看官,不要生气,我没有骂你也没有鄙视你的意思,今天就是想单纯的给大伙分享一下树的相关知识,但是我还是想说作为一名程序员,自己心里有没有点树?你会没点数吗?言归正传,树是我们常用的数据结构之一,树的种类很多有二叉树、二叉查找树、平衡二叉树、红黑树、B树、B+树等等,我们今天就来聊聊二叉树相关的树。什么是树?首先我们要知道什么是树?我们平常中的树是往上长有分支的而却不会形成闭环,数据结构中的树跟我...原创 2019-08-03 22:01:04 · 2908 阅读 · 11 评论 -
程序员,你应该知道的数据结构之哈希表
哈希表简介哈希表也叫散列表,哈希表是一种数据结构,它提供了快速的插入操作和查找操作,无论哈希表总中有多少条数据,插入和查找的时间复杂度都是为O(1),因为哈希表的查找速度非常快,所以在很多程序中都有使用哈希表,例如拼音检查器。哈希表也有自己的缺点,哈希表是基于数组的,我们知道数组创建后扩容成本比较高,所以当哈希表被填满时,性能下降的比较严重。哈希表采用的是一种转换思想,其中一个中要的概念是如...原创 2019-08-21 18:23:39 · 378 阅读 · 0 评论 -
程序员,你应该知道的数据结构之跳表
跳表的原理跳表也叫跳跃表,是一种动态的数据结构。如果我们需要在有序链表中进行查找某个值,需要遍历整个链表,二分查找对链表不支持,二分查找的底层要求为数组,遍历整个链表的时间复杂度为O(n)。我们可以把链表改造成B树、红黑树、AVL树等数据结构来提升查询效率,但是B树、红黑树、AVL树这些数据结构实现起来非常复杂,里面的细节也比较多。跳表就是为了提升有序链表的查询速度产生的一种动态数据结构,跳表相...原创 2019-08-16 19:32:37 · 825 阅读 · 0 评论 -
程序员,你应该知道的数据结构之栈
数据结构中的栈不要与 Java 中的栈混淆,他们俩不是一回事,数据结构中的栈是一种受限制的线性表,栈具有先进后出、后进先出的特点,因为栈只允许访问最后一个数据项,即最后插入的数据项。也许你会有疑问,栈既然有这么多限制,为什么不用数组或者链表而使用栈?在开发中,我们有特定的场景,根据特定的场景去选用数据结构,栈的适用场景非常多,比如浏览器的前进与后退、字符串括号的合法性等,我们使用栈来实现就比较好,...原创 2019-08-23 16:01:53 · 645 阅读 · 0 评论 -
看完这篇你还不知道这些队列,我这些图白作了
队列(queue)是一种采用先进先出(FIFO)策略的抽象数据结构,即最先进队列的数据元素,同样要最先出队列。队列跟我们排队买票一样,先来排队的肯定先买票,后来排队的的后买到票。队列如下图所示:队列有两个重要的概念,一个叫队头,一个叫队尾,队头指向的是第一个元素,而队尾指向的是最后一个元素。队列跟栈一样也是访问受限制的,所以队列也只有两个主要的操作:入队(enqueue)操作 和 出队(dequ...原创 2019-08-30 21:30:23 · 4945 阅读 · 18 评论