
算法
萌之兰
这个作者很懒,什么都没留下…
展开
-
剑指offer------栈队列、算法篇
剑指offer 思路总结1、数组1.1 数组中重复的数字 题目概要:在一个长度为n的数组里所有的数字都在0-n-1的范围内。数组中某些数字是重复的。(1)若是要找出任意一个重复数字 思路:对数组进行一次遍历,当扫描到下标为i的数字m时,首先比较这个数字m是不是等于i, 如果是,则继续扫描下一个数字; ...原创 2020-04-08 09:22:52 · 213 阅读 · 0 评论 -
剑指offer-------链表、二叉树
剑指offer思路总结1、链表1.1 从尾到头打印链表 题目概述:给出一个链表的表头,从尾到头反过来打印出每个结点的值。(1)若可以改变链表 思路:把链表反转,在遍历。(2)不能改变链表 思路:可以借助辅助栈的后进先出; 可以利用递归实现。1.2 删除链表的结点 题目一大致...原创 2020-04-08 09:17:33 · 251 阅读 · 0 评论 -
剑指offer-------数组、字符串
剑指offer 思路总结1、数组1.1 数组中重复的数字 题目概要:在一个长度为n的数组里所有的数字都在0-n-1的范围内。数组中某些数字是重复的。(1)若是要找出任意一个重复数字 思路:对数组进行一次遍历,当扫描到下标为i的数字m时,首先比较这个数字m是不是等于i, 如果是,则继续扫描下一个数字; ...原创 2020-04-08 09:12:08 · 285 阅读 · 0 评论 -
数据结构 红黑树与平衡二叉树的区别
红黑树与平衡二叉树的区别--------红黑树详解------------红黑树的性质:1、节点是红色或黑色。2、根节点是黑色。3、每个叶子节点都是黑色的空节点(NIL节点)。4、每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。这些约束强制了红黑树的关键...转载 2020-04-02 22:11:49 · 1280 阅读 · 0 评论 -
排序算法-------基数排序
基数排序基数排序也是非比较的排序算法,对每一位进行排序,从最低位开始排序,复杂度为O(kn),为数组长度,k为数组中的数的最大的位数;基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。基数排序基于分别排序,分别收集,所以是稳...转载 2020-03-19 00:01:12 · 168 阅读 · 0 评论 -
排序算法--------计数排序和桶排序
计数排序和桶排序1、计数排序计数排序是一种非比较性质的排序算法,元素从未排序状态变为已排序状态的过程,是由额外空间的辅助和元素本身的值决定的。计数排序过程中不存在元素之间的比较和交换操作,根据元素本身的值,将每个元素出现的次数记录到辅助空间后,通过对辅助空间内数据的计算,即可确定每一个元素最终的位置。1.1 算法描述找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素...原创 2020-03-18 23:24:42 · 599 阅读 · 0 评论 -
排序算法-------归并排序及优化
归并排序和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列...原创 2020-03-18 20:21:19 · 1523 阅读 · 1 评论 -
排序算法--------选择排序(简单选择排序和堆排序)
排序算法--------选择排序(简单选择排序和堆排序)目录排序算法--------选择排序(简单选择排序和堆排序)1、简单选择排序2、堆排序1、简单选择排序表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧...原创 2020-03-18 16:55:24 · 832 阅读 · 0 评论 -
排序算法-------插入排序(直接插入排序和希尔排序)
排序算法-------插入排序(直接插入排序和希尔排序)目录排序算法-------插入排序(直接插入排序和希尔排序)1、直接插入排序2、希尔排序1、直接插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用i...原创 2020-03-18 13:39:52 · 373 阅读 · 0 评论 -
排序算法--------交换排序(冒泡排序和快速排序)
排序算法------交换排序(冒泡排序和快速排序)目录排序算法------交换排序(冒泡排序和快速排序)1、冒泡排序2、快速排序1、冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“...原创 2020-03-18 11:25:19 · 449 阅读 · 0 评论 -
BItmap算法
Bitmap 算法目录Bitmap 算法1、什么是Bitmap算法2、基本思想3、如何如何确定10进制数到二进制的转换1、什么是Bitmap算法所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间。2、基本思想首先用一个简单的例子来详细介绍BitMap算法的原...转载 2020-03-13 12:29:00 · 271 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)算法
布隆过滤器原理开发一个电商项目,因为数据量一直在增加(已达亿级),所以需要重构之前开发好的秒杀功能,为了更好的支持高并发,在验证用户是否重复购买的环节,就考虑用布隆过滤器。也顺便更加深入的去了解下布隆过滤器的原理,感觉还是蛮有意思的,这一连串的公式不静下心来思考,很容易被绕晕。 一、概述1、什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构,特点是高效地插...转载 2020-03-13 10:00:14 · 2037 阅读 · 0 评论