#算法的乐趣

grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)

这篇长文历时近两天终于完成了,前两天帮网站翻译一篇文章“为什么GNUgrep如此之快?”,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解这个算法,发现这个算法一开始还挺难理解的,也许是我理解能力不是很好吧,花了小半天才看懂,看懂了过后就想分享下,因为觉得这个...

编程面试的10大算法概念汇总

a:link{text-decoration:none}a:visited{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}嘿,第一次翻译文章,在ProgramCreek看到的,原文章名为Top10Algor...

图解排序算法(五)之快速排序——三数取中法

/快速排序由C.A.R.Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列三数取中  在快排的过程中,每一次我们要取一个元素作为...

图解排序算法(一)之3种简单排序(选择,冒泡,直接插入)

  排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。  先定义个交换数组元素的函数,供排序时调用/***交换数组元素*@paramarr*@...

针对范围对的高效查找算法设计(不准用数组)

题目链接在:针对一群范围对的最快查找算法设计(不要用数组),是我目前遇到的一个较棘手的问题。/描述如下:假如有一群范围对,格式为:<范围表示,该范围对应的结果值>,设计一个最快查找算法,使得给定一个值,输出该值所在范围对的结果值。注意1:范围对之间没有交集,即不可能存在<1,10>和<2,...

Python模块——HashLib(摘要算法)与base64

摘要算法(hashlib)Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)你写了一篇文章,内容是一个字符串'howtousepythonhashlib-by...

c#中常见的算法(归并排序)

归并排序(Mergesort):是建立在归并并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归归(所有递归的方法都可以用重组重写,所以就有了第2种方法);自下而上的继承;算法思路:1,申...
代码星球 ·2021-02-13

c#中常见的算法(选择排序)

选择排序:选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n²)的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。算法思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二...
代码星球 ·2021-02-13

c#中常见的算法(希尔排序)

希尔排序:也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:1,插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;2,但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;希尔排序的基本思想是:先将...
代码星球 ·2021-02-13

c#中常见的算法(插入排序)

插入排序:插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单的直观排序算法,他的工作原理是通过构建有序序列,对于未排序数据,在已排序列中从后向前扫描,找到相应的位置并插入算法步骤:1,将第一待排序序列第一个元素看作一个有序...
代码星球 ·2021-02-13

c#中常见的算法(冒泡排序)

冒泡排序(BubbleSort):是一种直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法思路:1,比较相邻的元素。如果第一个...
代码星球 ·2021-02-13

C#中递归算法的总结

递归是数学中一种重要的算法思想,在编程中也常常用到递归思想解决问题,运用递归,使代码显得更加简洁。现将总结的关于编程中使用递归的方法总结如下:///<summary>///一个数组:1,1,2,3,5,8,13,21...+m,求第30位数是多少?用递归实现;///</summary>///&l...
代码星球 ·2021-02-13

python插入排序算法总结

插入排序算法总结:插入算法的核心是每次循环到一个数时,都认为这个数之前的数列都是排好序的,将一个数插入到已经排好序的有序数列中,从而得到一个新的、个数加一的有序数列。过程:从第一个元素开始,第一个数肯定是有序的,把第二个数和第一个数相比,插入到合适的位置,这样前两个数就是有序的了,接着,把第三个元素插入到前面包含两个元...

python选择排序算法总结

选择排序算法:a=[6,5,4,3,2,1]算法思路:第一步:在列表的第一个位置存放此队列的最小值声明一个变量min_index等于列表的第一个坐标值0从第一个位置0坐标开始,和它后边所有的元素一一比对,如果发生了后边的值min_index坐标的对应的值更小,则min_index值改为后边那个数的坐标,然后用min_i...

理解一致性哈希算法

场景分析在分布式缓存的伸缩性设计中,最主要的目标就是在新加入缓存服务器后,应该使整个服务器集群中已经缓存的数据尽可能还被访问到。对于服务器集群管理,路由算法至关重要,它决定着客户端究竟该访问集群中的哪台服务器。余数Hash简单的路由算法可以使用余数Hash:/用服务器数目除缓存数据key的Hash值,余数为服务器列表下...
首页上一页...678910...下一页尾页