算法
文章平均质量分 52
画个小圆儿
胸怀文墨虚若谷,腹有诗书气自华
展开
-
桶排序详解
桶排序学习转载 2022-09-03 15:33:34 · 244 阅读 · 0 评论 -
基数排序(学习)
基数排序学习原创 2022-09-02 17:19:41 · 304 阅读 · 0 评论 -
教你彻底学会动态规划——入门篇
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个例子来一步一步讲解动态规划是怎样使用的,只有知道怎样使用,才能更好地理解,而不是一味地对概念和原理进行反复琢磨.转载 2021-07-29 17:25:04 · 449 阅读 · 0 评论 -
Unity中广度优先搜索
广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。BFS同样属于盲目搜索。一般用队列数据结构来辅助实现BFS算法。广度优先遍历的步骤:首先将根节点放入队列中。 从队列中取出第一个节点,并检验它是否为目标。 如果找到目标,则结束搜寻并回传结果。 否则将它所有尚未检验过的直接子节点加入队列中。 若队列为空,表示整张图都检查过了——亦即图中没有欲搜寻的目标。结束.原创 2020-08-16 23:25:01 · 545 阅读 · 0 评论 -
Unity中DFS深度优先算法
深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分 支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发 现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。深度优先遍历的过程:1.从顶点t出发,选择一个与t相连的未被访问过的顶点w。2.然后从w出发,选择与w相连的一个未被访问原创 2020-08-12 18:12:59 · 681 阅读 · 0 评论 -
C#中IP地址与数字之间的互换
平常我们的ip地址存入计算机并不是点分形式,而是uint32类型的。下面使用C#实现IP地址与数字之间的转换。using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Net;using System.Text;using System...转载 2019-06-24 17:25:15 · 649 阅读 · 0 评论 -
经典排序算法之二分查找算法
二分查找又称折半查找,它是一种效率较高的查找方法。特点:1、二分查找仅适合线性表的顺序存储结构,不适合链式存储结构。2、必须按关键字大小有序排列原理:①、将数组分为两半,并且算出中间的下标mid,前一半从下标0到mid - 1,后一半从mid + 1到数组最后一个元素。②、将要查找的数与数组下标为mid的元素进行比较,如果要查找的数大,则把查找范围缩小到原数组的后一半(反之...原创 2019-02-21 10:59:37 · 768 阅读 · 0 评论 -
(C#)两个栈实现队列和两个队列实现栈
首先说一下队列和栈的相同点和不同点:相同点:1、都是线性结构。2、插入操作都是限定在表尾进行3、都可以通过顺序结构和链式结构实现4、插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样5、多链栈和多队列的管理模式也可以相同不同点:1、删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。2、栈是先进后出,队列是先进先出3、应用场景...原创 2019-02-22 18:31:19 · 681 阅读 · 0 评论 -
经典排序算法之堆排序
堆排序是一种选择排序,是不稳定的排序方法。特点:在排序过程中,将排序数组看成是一棵完全二叉树存储结构,利用完全二叉树中父节点和孩子节点之间的内在关系,在当前无序区中选择关键字最大(最小)的记录。基本思想:堆分大根堆和小根堆,大根堆是父节点比所有子节点都大,小根堆是父节点比所有子节点都小。下面以大根堆为例。1、先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区。2、...原创 2019-02-11 18:10:24 · 245 阅读 · 0 评论 -
(C#)顺时针/逆时针打印矩阵
题目描述:思路 : 建立一个list,遍历数组中行(列)添加到list中,然后改变数组的遍历方向顺时针(逆时针)旋转90度,知道遍历完成。顺时针代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading...原创 2019-02-22 11:36:54 · 820 阅读 · 2 评论 -
经典排序算法之简单选择排序(C#)
简单选择排序是一种简单直观的排序算法。工作原理:①、将数组分成两部分,一部分为已排序好的数组,一部分为待排序数组。②、在待排序数组中选出一个最小值(或最大值)将其放入待排序好的数组中的最前面,然后将已排序数组加一,待排序数组减一。③、重复②操作。看代码: class Program { static void Main(string[] args) { ...原创 2018-04-08 19:14:18 · 436 阅读 · 0 评论 -
经典排序算法之冒泡算法(C#)
冒泡算法是所有排序算法中最容易想到的最简单的算法,废话不多说先看代码:class Program { static void Main(string[] args) { int[] arr = { 12, 3, 456, 21, 7, 32, 43 }; MaoPao(arr); } ...原创 2018-03-27 17:04:14 · 626 阅读 · 0 评论 -
经典排序算法之直接插入排序(C#)
直接插入排序是一种简单直观的排序算法。工作原理:①、将数组分成两部分,一部分为以排序数组,一部分为待排序数组。②、将待排序数组的第一个元素与以排序数组的最后一个元素进行比较,若待排序数组的第一个元素比以排序数组的最后一个元素小(从小到大排序),就将其与之前的元素进行比较,直到将他放到合适的地方。然后将已排序数组加一,待排序数组减一。③、重复②操作。看代码: static void Main(s...原创 2018-04-20 18:52:52 · 561 阅读 · 0 评论 -
经典排序算法之希尔算法(C#)
希尔排序是基于直接插入排序的一种更快速的排序算法,想要了解希尔排序,必须先掌握直接插入排序。工作原理:希尔排序的工作原理是将全部元素分为几个区域来进行插入排序(同一区域的元素是通过间隔相同步长的元素来确定的),先把几个小部分元素排序号,然后通过减少步长来进行排序,最后一步就和直接插入排序是一样的(步长为1),但是这时候序列中的元素已经基本有序了,所以此时的插入排序比较快。看代码: class Pr...原创 2018-05-17 18:06:51 · 364 阅读 · 0 评论 -
经典排序算法之归并排序(C#)
归并排序是建立在归并操作上的一种有效的排序算法,该算法是分治算法的一个典型应用。工作原理:拆分阶段:将数组拆分成左右两部分,将左右两部分继续拆分直到足够小(一般就是1了,因为这时要保证序列是有序的)。合并阶段:①、申请空间,使其大小等于两个已经排序序列之和,该空间是用来临时存放合并后的序列的。 ②、将两个以排序序列从前向后依次比较,选择相对较小的放入临时空间中。 ...原创 2018-05-18 18:10:13 · 1274 阅读 · 0 评论 -
经典排序算法之快速排序(C#)
快速排序是一个对冒泡排序改进的排序。工作原理:①、设置两个指针a和b分别指向序列的开始和最后②、设置一个参照物(一般是第一个数),由指针b指向的数与参照数进行比较,如果指针指向的数比参照数大,指针左移。如果如果指针指向的数比参照数小,交换他们两个的位置并由指针a操作。③、由指针a指向的数与参照数进行比较,如果指针指向的数比参照数小,指针右移。如果如果指针指向的数比参照数大,交换他们两个的位置并由指...原创 2018-05-21 18:05:16 · 396 阅读 · 0 评论 -
面试题之算法面试题(一)
问题:1. 输入一个个数较大的正整数数组[数字范围在0~9999],将部分数组元素的十进制表示连接起来排成一个数,输出能排出的所有数字中最大的一个。find例如输入数组{3423,33,456,9,8,7,21}和3,则输出的最大数为:456342333。要求:(1) 输出数字用十进制字符串表示(2)除打印函数和内存创建/销毁函数外,不得使用其它库函数,如需要相似功能,请自己实现;...原创 2018-09-02 00:10:50 · 348 阅读 · 0 评论 -
约瑟夫环问题
代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Test1{ class Program { static void Main(string[] ...原创 2019-01-14 16:10:35 · 213 阅读 · 0 评论