
算法宝典
她的坏机器人
你好,AI
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
欧几里得算法
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。原创 2023-04-05 15:17:20 · 323 阅读 · 1 评论 -
求二叉树的最小深度,DFS深度优先搜索算法
要求:求二叉树最小深度算法:DFS深度优先搜索算法几种特殊的情况空树判断的当前节点为空,则需要返回最小深度为0只有一个节点这一个节点就是叶子结点,无需递归,但深度也需要加一两个结点根节点的左节点递归一次,深度为2,右节点如果直接递归,递归后会判断当前节点为空,会把最小深度置为0,所以需要判断:当子节点不为空的时候才递归搜索深度很大当深度很大的时候,最小深度的值会小于实际数的最小深度,导致最小深度值不变,所以需要为最小深度的初始值设置一个最大的值代码测试package com.rob原创 2020-08-22 15:44:35 · 466 阅读 · 0 评论 -
【算法】——基数排序,一种空间换时间的稳定排序算法
基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较基数排序是一种稳定排序算法基数排序的方式可以采用最低位优先LSD(Least sgnificant digital)法或最高位优先MSD(Most sgnificant digital)法,LSD就是从个位先进行排序,然后十位、百位......MSD则相反举例分析有一组无序序列,我们将其...原创 2020-04-03 20:16:49 · 1663 阅读 · 0 评论 -
【算法】——选择排序,实例分析选择排序算法
选择排序,将一个序列看做两个部分,前面有序,后面无序,每次在后面的无序序列中,选择一个最小的元素,交换到前面有序序列的末尾,直到无序序列全部完成交换,即可完成排序选择排序是不稳定的排序算法如何判断一个排序算法是否稳定如果一个待排序列中有多个相同的元素,经过排序后,它们的次序保持不变,则称这种排序算法是稳定的 (即假如有元素A = 5,B = 5,且 A 在 B 的前面,经过排序后,A...原创 2020-03-30 22:12:26 · 475 阅读 · 0 评论 -
【算法】——归并排序,图解高效的归并排序算法
归并排序是一种稳定高效的排序,采用分治策略,将问题分解为一个个小的问题,然后解决主要思想先分解,再归并一次归并只能处理两个有序序列,所以需要将序列不断划分为更小的序列 当递归到最小的时候,每个小序列里只有一个元素,一定是有序的,所以可以进行归并 然后,因为这个归并之后的序列也是有序的了,所以可以和其它有序序列再进行归并,直到结束所有递归。其中每次如何将两个有序序列进行归并:...原创 2020-03-30 10:00:06 · 277 阅读 · 0 评论 -
【算法】——希尔排序,最直观的方法理解希尔排序
希尔排序(Shell's Sort)是插入排序的一种,又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。排序步骤:(这里取增量(步长)为最...原创 2020-03-23 22:00:55 · 822 阅读 · 1 评论 -
【算法】——直接插入排序,通过Java代码以两种方式实现
可以理解为:将一个序列拆分为两个,前面那个序列是有序的,后面那个序列是无序的,每次比较都在无序序列中拿出一个元素,插入到有序序列中合适的位置,直到无序序列都被插入完为止就好比我们打扑克一样,每次抓来一张牌,我们都要将它插入到合适的位置,来使手里的牌有序例如:目前有一个序列(5, 2, 0, 1, 3, 1, 4)首先,我们将这个序列当做两个来看 前面是有序的:(5),(因为一个元素...原创 2020-03-23 08:23:21 · 292 阅读 · 0 评论 -
【算法】——快速排序算法的详解,并使用Python、Java代码实现
快速排序法基本思想:通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后分别对这两部分记录再进行分割排序,重复执行,直到整个序列有序为止。过程需要:low:待排序列中的首个元素的索引 high:待排序列的最后一个元素的索引 pivot:基准,序列中挑选出的一个作为标准参考的元素(这里让基准 = 待排序列中的首个元素) left,...原创 2020-03-22 09:35:24 · 269 阅读 · 0 评论 -
【算法】——冒泡排序算法,深入详解(Java、Python两种语言实现)
冒泡排序算法依次比较相邻的两个数,将小数放在前面,大数放在后面,直到将最大数放在最后,然后进行第二趟比较第一趟排序:将序列中的第一个元素与第二个元素比较 如果第一个元素 > 大于第二个元素,则交换 然后比较第二个元素与第三个元素,以此类推 直到第 N-1 个与第 N 个元素比较完为止,然后进行第二趟排序第二趟排序:重复上述操作,以此类推 直到第 N-2个元素与第...原创 2020-03-20 19:55:36 · 266 阅读 · 0 评论 -
蒙特卡洛法计算圆周率π(Python,Java,c 三种方式详解)
一、蒙特卡洛法简介蒙特·卡罗方法(MonteCarlomethod),也称统计模拟方法,一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。二、蒙特卡洛法计算圆周率的原理正方形的面积为:圆的面积为:圆的面积比上正方形的面积为:π / 4所以我们使用蒙特卡洛法在正方形内随机撒点,落在圆内的点 / 落在正方形内...原创 2020-01-30 16:01:34 · 43963 阅读 · 2 评论