![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
小六神通
I'm a newbine
展开
-
插入排序(希尔排序、直接插入、折半插入排序)
希尔排序:(我自己的理解,刚开始进行算法学习,希望大家可以指点)插入排序最好情况下是整个数的序列是有序的(因为不用进行数的移动),而希尔排序就是利用了这一点1、当只有一个数时,不需要进行排序,有两个数时,只需要这两个数简单的进行比较,如果前边的大于后边的(默认升序排列),两者就互换位置即可,这样比较简单易懂,因此,刚开始以两个数为一组,然后用数列长度除以2得到第一次进行希尔排序的步长,原创 2016-09-28 19:24:26 · 1039 阅读 · 0 评论 -
教你如何迅速秒杀掉:99%的海量数据处理面试题
转自:http://blog.csdn.net/v_july_v/article/details/7382693前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名 :-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽转载 2017-02-23 09:47:30 · 706 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
转自:http://blog.csdn.net/v_july_v/article/details/6279498/第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模转载 2017-02-23 09:45:21 · 437 阅读 · 0 评论 -
一致性哈希算法
原文地址:http://www.cnblogs.com/color-my-life/p/5799903.html使用场景现在我们假设有100台redis data服务器,一份数据101进来的时候,以散列公式hash(i)&100,计算所存放的服务器,假设hash(i) = i,那么数据被散列到标号为1的服务器,然后这个时候服务器新增了一台,然后散列公式为hash(i转载 2017-02-21 10:52:36 · 201 阅读 · 0 评论 -
partition函数
前提:需要有一个用来进行对比的基准partition函数是将一个数组分成三部分:左部分:是中部分:是==基准右部分:是>基准left:左部分的右边界index:中部分右边界的右边right:右部分的左边界遍历过程中,左部分和中部分一直是重合的,中部分和右部分的边界在努力的靠近并准备合并。详细:当arr[index]当arr[ind原创 2017-01-02 22:28:13 · 4349 阅读 · 0 评论 -
哈希表总结
哈希表即为键值(哈希函数的自变量)到哈希值(哈希函数的函数值)的映射哈希的两个关键点1、哈希函数,适当的哈希函数会使查找效率提高2、解决冲突,即不同键值对应相同的哈希值 哈希函数的方法1)数值分析法适用于:当键值的位数较多时,选择所有键值中数字分布比较均匀的即为选为键值2)平方取中法适用于:所给的所有键值的数字分布不是特别均匀的情况下,将键值平方后 ,使可选原创 2016-11-19 23:26:01 · 648 阅读 · 0 评论 -
分治法------二分查找
1、首先二分查找满足分治法的四个条件1)原问题的解可以通过分解为若干个小的问题来解决;(将原数组序列可分解为两个子序列)2)小的问题的解决方法和原问题的解决方法大致相似;(都是确定一个序列的上界和下界然后求得mid进行比较)3)小问题的解可以通过合并从而得到原问题的解;(在子序列中可以更容易得到解从而return得出结果)2、二分法分治法的思维过程分治法类似于数学归纳法原创 2016-11-17 22:54:44 · 1298 阅读 · 0 评论 -
前缀表达式--》中缀表达式、 中缀表达式--》前缀表达式
中缀表达式-------->前缀表达式方法一:将操作操作的两个对象放在操作符的后边便可将中缀表达式构成前缀表达式,(将优先级高的操作符和操作数先结合,然后加上括号,最后输出的时候 ,把括号去了即可)例1:a+b*c 前缀:+(a(*bc)) ---》 +a*bc方法二:利用二叉树来解决;中缀表达式在二叉树中,运算符总是位于根节点的位置,如上图所示,前缀表达式则是将此二叉树进行前序遍历原创 2016-10-04 15:30:25 · 517 阅读 · 0 评论 -
堆排序
堆排分三个步骤:(假设结果按照升序排列)1)先创建一个大根堆,然后将根节点和未被排序的序列的最后一个元素进行交换,此时最后一个元素从未被排序的序列移到被排序的序列。2)因为在第一步的基础上,只是根节点破坏了大根堆的,其余非叶结点并没有破坏大根堆,所以从根节点开始创建一个大根堆3)然后将大根堆的根节点和未被排序的序列中的最后一个元素进行交换,此时最后一个元素从未被排序的序列加入到被排序的原创 2016-10-03 21:41:54 · 270 阅读 · 0 评论 -
两个队列实现栈、两个栈实现队列
两个栈实现一个队列看了各路大神的思路,我就综合了一下,写出了自己的一些理解,希望大家能指出我的不足。栈s1实现主要实现“入队”操作;栈s2实现主要实现”出队“操作;思路一:入队时:判s1是否为空,若为空,把s2里边的的元素“全部”倒回s1里边;若s1不为空,则直接将元素入栈s1;出队时: 判s2是否为空,若为空(假设此时s1不为空,若s1也为空,就只原创 2016-10-01 11:38:13 · 396 阅读 · 0 评论