数据结构和算法
qw_xingzhe
身后是家园,眼前尽是世界!
展开
-
一致性哈希算法原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性has转载 2020-09-04 07:53:22 · 103 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度-总结
通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间复杂度分析方法是很有必要的。 ...转载 2018-05-30 11:19:12 · 467 阅读 · 0 评论 -
经典排序算法 - 选择排序Selection sort
这种算法相对于冒泡排序而言,是找到了每趟循环中最适合的那位数的位置才选择与它进行交换。其优势是减少了不必要的交换操作,故性能更优。PHP代码实现参考:参考:http://www.cnblogs.com/kkun/archive/2011/11/23/selection_sort.html...原创 2018-05-30 00:53:49 · 290 阅读 · 0 评论 -
经典排序算法 - 插入排序Insertion sort
插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),Patience排序(Patience Sort)。(一)直接插入排序直接插入排序(Insertion ...原创 2018-05-30 09:50:02 · 435 阅读 · 0 评论 -
经典排序算法 - 快速排序Quick sort
原理,通过一趟扫描将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列举个例子如无序数组[6 2 4 1 5 9]a),先把第一项[6]取出来,用[6]依次与其余项进行比较,如果比[6]小就放[6]前边,2 4 1 5都比[6]小,所以全部放到[6]前边如果比[6]...原创 2018-05-30 13:01:17 · 334 阅读 · 0 评论 -
经典排序算法 - 希尔排序Shell sort
参考:http://www.cnblogs.com/huangxincheng/archive/2011/11/20/2255695.html原创 2018-05-31 11:06:05 · 458 阅读 · 0 评论 -
经典排序算法 - 归并排序Merge sort
归并排序的原理是把原始数组分成若干子数组(两两分组),对每一个子数组进行排序,继续把子数组与子数组合并(方法:从两子数组头各取一值,小者放入新数组尾部,大者保留至下一趟对比,直至这两个子数组值全部取完),合并后仍然有序,直到全部合并完,形成有序的数组。PHP代码实现参考:/** * 归并排序 * 原理:把原始数组分成若干子数组(向下递归到2个或1个元素一组),对每一个子数组进行排序, * ...原创 2018-05-31 17:32:16 · 460 阅读 · 0 评论 -
[经典算法][PHP实现集锦]
本文参照 [经典排序算法][集锦] 及相关文章,使用PHP语言重新实现了一遍。相关原理及图解如文中缺少,可到访问参考文章中查看。相关实现及说明难免有不足之处,欢迎指教。经典排序算法 - 冒泡排序 Bubble sort经典排序算法 - 插入排序Insertion sort经典排序算法 - 选择排序Selection sort经典排序算法 - 快速排序Quick sort经典排序算法 - 希尔排序S...原创 2018-05-31 18:10:36 · 582 阅读 · 0 评论 -
经典排序算法 - 冒泡排序 Bubble sort
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换。这样一趟过去后,最大或最小的数字被交换到了最后一位。然后再从头开始进行两两比较交换,直到倒数第二位时结束。PHP代码实现参考:function bubble_sort($arr){ $count = count($arr); for( $i=0;$i<$count;$i++){ // 外层控制趟数 for (...原创 2018-05-29 23:51:15 · 387 阅读 · 0 评论 -
PHP解汉诺塔
问题描述:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。解决思路:(1)以C盘为中介...原创 2018-06-04 11:49:18 · 947 阅读 · 0 评论 -
基于词典的中文情感倾向分析算法设计
基于词典的中文情感倾向分析算法设计 2014-06-05 11:23:08 By:@小和子 (计算传播学小站编辑)https://site.douban.com/146782/widget/notes/15462869/note/355625387/ 情感倾向可认为是主体对某一客体主观存在的内心喜恶,内在评价的一种倾向。它由两个方面来衡量:一个情感倾向方向,一个是情感倾向度。转载 2016-10-28 21:43:44 · 4571 阅读 · 0 评论 -
史上最全的机器学习资料(上)
摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB、Python、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、转载 2016-10-31 10:13:14 · 1664 阅读 · 0 评论 -
史上最全的机器学习资料(下)
摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB、Python、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。推荐:史上最全的机器学习资料(上)机器学习(Machine Learning, ML)转载 2016-10-31 10:14:18 · 1611 阅读 · 0 评论 -
常见数据结构PHP实现
单向链表双向链表栈和队列树图原创 2018-06-03 12:59:10 · 4590 阅读 · 0 评论 -
数据结构基础概念篇
数据结构一些概念数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的基本单位数据项:数据的不可分割的最小单位。一个数据元素可由若干个数据项组成。数据类型:在一种...转载 2018-06-03 13:01:14 · 882 阅读 · 0 评论 -
用PHP实现单向链表结构
链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起。而单向链表就是:每个节点包含了当前节点的值和下一个节点引用。双向链表就是每个节点包含了当前节点的值和上下两个节点的引用。相对于数组结构,链表的增删效率会更加高。单向链表(示意图):PHP代码实现/** * 链表结构 */class Hero{ public $no; public $name; public $nex...原创 2018-06-03 15:45:35 · 2345 阅读 · 0 评论 -
使用环形链表与约瑟夫问题
约瑟夫问题:Josephu问题为:设编号为1,2,...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。并求出最后出列的人是哪个?参考:https://blog.csdn.net/wenximalong/article/details/829...原创 2018-06-03 16:04:54 · 696 阅读 · 0 评论 -
使用栈完成高级计算器
1.堆栈的概念一个先入后出(FILO-First In Last Oot)的有序列表。堆栈(stack)的限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,成为(Top),另一端为固定的一端,称为栈底(Bottom)。根据堆栈的定义而知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素(或者取元素)刚好相反,最后放入的元素最先删除,最...原创 2018-06-03 20:28:19 · 1083 阅读 · 0 评论 -
算法集锦
[经典排序算法][集锦]转载 2015-03-05 21:27:17 · 419 阅读 · 0 评论