
算法数据结构
文章平均质量分 66
Michael曾
这个作者很懒,什么都没留下…
展开
-
排序算法-计数排序
计数排序,桶排序,基数排序都是不基于比较的算法,所以可以突破O(n*log(n))的时间复杂度下限。计数排序适合 数据集中在一个较小范围的数据集合的排序;否则需要的辅助空间就很大了。桶排序适合 数据分布比较均匀的数据集合的排序;将数据分散到多个桶内,每个桶内采用插入排序(因为分布均匀,每个桶内的数据量小,插入排序还是很高效的)基数排序:个人感觉类似于进行多次桶划分;基数n,就是数据按照规则(...原创 2020-04-04 14:32:16 · 356 阅读 · 0 评论 -
排序算法-归并,快速,堆排序
归并排序算法原理(从小到大为例):将数组分成两部分,每部分分别排序,形成有序的两部分,然后遍历比较每部分的头部元素,形成新的数组其中,每部分分别排序,递归使用步骤1,递归终止情况为:需要排序的部分只有一个元素图片来源:极客时间,《数据结构与算法之美》,12章时间复杂度:O(n*log(n)),空间复杂度:O(n) ,稳定的排序算法java代码/** * 从小到大排序...原创 2020-04-04 13:10:06 · 306 阅读 · 0 评论 -
排序算法-冒泡,插入,选择排序
算法原理(从小到大排序为例):将数组分成两部分,左边部分为已排序部分,右边部分为未排序部分从未排序部分的右侧开始遍历,相邻两个元素比较,保证小元素在前,即如果num[j]>num[j+1],就做元素交换,否则不交换交换到左右两部分的边界处,右边第一个元素即为右边部分最小元素,左边最后一个元素即为左边部分最大元素,由于左边部分是右边部分每次从小到大冒泡排序出来的,所以此时左边部分加上右...原创 2020-04-03 15:24:21 · 217 阅读 · 0 评论 -
排序算法-堆排序
堆排序有最大堆,最小堆。最大堆:非叶子节点比左右子节点要大最小堆:非叶子节点比左右子节点要小以构建最大堆为例,堆排序的过程:1、原始数组形成一个顺序堆。数组中下标索引为i的节点,左节点是i2 +1,右节点是i2+22、初始化堆,从最后一个叶子节点的父节点开始一层层向上遍历,使得每一对父子节点中的最大节点上浮,维持最大堆的性质。如果有交换位置的操作,那么要以被交换的子节点为父节点递归遍历...原创 2018-12-22 14:51:41 · 785 阅读 · 0 评论 -
面试准备-数据结构(持续更新)
1、二叉查找树若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点(no duplicate nodes)。2、二叉平衡树,AVL树:首先是二叉查找树,并且左右两个子树都是一棵平衡二叉树,左右子树高度差不超过13、红黑树:首先是二叉查找树,...原创 2018-10-22 11:07:03 · 294 阅读 · 0 评论 -
转载文章积累-算法
时间轮算法在一些设置超时,或者延迟任务的系统中,如kafka,netty等,会使用时间轮算法netty的时间轮算法的解读Kafka解惑之时间轮转载 2019-03-08 18:16:24 · 196 阅读 · 0 评论 -
算法-寻找唯一(唯二)未重复的数据
原文发表在公众号“苦逼码农”上,作者“帅地”题目:有一组存放 ID 的数据。并且 ID 取值为 0 - (N-1) 之间,其中只有一个 ID 出现的次数为 1,其他的 ID 出现的次数都等于 2,问如何找到这个次数为 1 的 ID ?解法一:巧用数组下标不知道有多少人还记得我之前分享的巧用数组下标的技巧:一些常用的算法技巧总结。我的第一想法便是采用下标法来解决,把 ID 作为数组 arr...转载 2019-03-13 19:23:58 · 1009 阅读 · 0 评论