#数据结构与算法

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中repr和eval可以用来在数据结构和字符串间互转

在这个功能上,repr和str的作用一样,把一个数据结构转换成字符串,例如:>>>str([1,2,3,4])'[1,2,3,4]'>>>repr([1,2,3,4])'[1,2,3,4]'eval是把字符串转换成数据结构,例如:>>>eval('[1,2,3,4]...

python插入排序算法总结

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

python选择排序算法总结

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

理解一致性哈希算法

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

Java与算法之(4)

全排列是指n个数(或其他字符)所有可能的排列顺序,例如123三个数字的全排列是123132213231312321那么问题来了,任意输入一个大于1的数字n,列出1-n这n个数字的全排列。如果尝试手动列举一下123的全排列,会发现通常我们会在头脑中制定好规则,并按照既定规则进行枚举,从而得到所有排列。在这里我们制定的规则...
代码星球 代码星球·2021-02-12

Java与算法之(3)

斐波那契数列问题:如果一对兔子每月能生1对小兔子,而每对小兔在它出生后的第三个月里,又能开始生1对小兔子,假定在不发生死亡的情况下,由一对初生的兔子开始,1年后能繁殖出多少对兔子?首先手工计算来总结规律,如下表注意总数这一列1+1=21+2=32+3=53+5=85+8=13可以得出规律,第n个斐波那契数=第n-1个斐...
代码星球 代码星球·2021-02-12

Java与算法之(2)

快速排序的基本思路是,每次选定数列中的一个基准数,将小于基准数的数字都放到基准数左边,大于基准数的数字都放到基准数右边。然后再分别对基准数左右的两个数列分别重复以上过程。仍以4362715为例。选定最左侧数字4为基准数,首先从右开始向左找小于4的数,找到第一个数1后停止。然后从左开始向右找到第一个大于4的数,即6。交换...
代码星球 代码星球·2021-02-12

Java与算法之(1)

冒泡排序法的原理是,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。例如对4362715这7个数字进行从小到大的排序,从最左侧开始,首先比较4和3因为是从小到大排序,4和3的顺序显然是错误的,交换他们,得到接下来比较4和6顺序是正确的,不需要任何操作。接下来进行下一步,比较6和26显然应该排在2的后面,怎么...
代码星球 代码星球·2021-02-12

动态规划算法

 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。[1] 动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的...
代码星球 代码星球·2021-02-12

关于数据结构的趣闻

在Reddit上看到一个英文帖子,问:上了数据结构课后,还有正常生活么?有人引用了Quora上的一个英文回答,大意如下:嗯,没有!你看东西的眼光,不可能和以前一样了。不管你信不信?反正我是信了。我来举栗子:在食堂吃饭排队,现在叫「队列」;餐盘处的那一摞摞盘子,那是「栈」;你现在不是「拿」餐盘,而是把盘子弹「出栈」;学校...
代码星球 代码星球·2021-02-12

深度学习剖根问底: Adam优化算法的由来

在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯度下降,还是Adam方法?这篇文章介绍了不同优化算法之间的主要区别,以及如何选择最佳的优化方法。我们应该使用哪种优化器?在构建神经网络模型时,选择出最佳的优化器,以便快速收敛并正确学习,同时调整内部参数,最...

机器学习排序算法:RankNet to LambdaRank to LambdaMART

使用机器学习排序算法LambdaMART有一段时间了,但一直没有真正弄清楚算法中的所有细节。学习过程中细读了两篇不错的博文,推荐给大家:梯度提升树(GBDT)原理小结徐博FromRankNettoLambdaRanktoLambdaMART:AnOverview但经过一番搜寻之后发现,目前网上并没有一篇透彻讲解该算法的...
首页上一页...1314151617...下一页尾页