算法
文章平均质量分 55
~羽~.
只是野蛮生长
展开
-
Go 队列学习与实现
先进先出是一个有序列表,可以用数组或者是链表来实现应用场景:排队.原创 2023-03-04 16:41:21 · 210 阅读 · 0 评论 -
Go 稀疏数组学习与实现
一般就是指二维以上的数组当一个数组中大部分元素是0 ,或者为同一个值的数组时,可以使用系数数组来保存该数组.记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlBq9xxF-1677594413402)(…/…/images/Pasted%20image%2020230228201055.png)]这就是一个六行七列的二维数组.原创 2023-02-28 22:29:00 · 397 阅读 · 0 评论 -
线性表详解(附代码)
文章目录最简单的结构:线性表线性表的概念操作顺序表1、定义顺序表结构2、定义顺序表的操作3、初始化顺序表4、顺序表的长度5、添加节点6、插入节点7、删除节点8、按序号查找节点9、按照关键字查找节点10、遍历顺序表:运用实例:最简单的结构:线性表线性表有两种形式:顺序线性表链式线性表线性表的概念 由若干个数据组成的集合可以看做是一个线性表。线性表中的数据元素之间的关系是一对一,即除了第一个和最后一个元素外,其他元素都是首尾相接的。例如学生的学号组成的数据就是一个线性表。如下图:20原创 2021-05-15 21:55:39 · 2851 阅读 · 0 评论 -
模拟算法
模拟算法 很多算法都是可以建立数学模型的,有规律的。计算机程序在与人交互中经常会出现一些不能数学建模的情况,也就不能使用算法求解了 这时,可以使用模拟法来解决。例如:计算机模拟抛硬币得到正反面的概率的情况。技巧:通过程序设计,用计算机来模拟生成日常生活中的相关数据,以分析相应的数据,从而对实际工作进行预判。算法思想: 在程序设计语言中,可以使用随机函数来模拟自然界中发生的不可预测的情况。在C语言中使用srand()和rand()两个函数来生成随机数。提示:函数srand()用来初始化原创 2021-04-03 14:25:00 · 638 阅读 · 0 评论 -
回溯算法思想
回溯算法思想回溯法又叫试探法,它是一种系统的搜索问题解的方法。该算法设计思想适用相当广泛。例如,棋手思考下一步应该走哪里的时候,就会采取试探的方法,当然是在脑中试探。首先想一下下一步的位置,计算对手的应对,再计算自己的应对,若对手的应对对我不利,则取消资格设想。然后再计算另一种想法。算法思路: 回溯法是计算机中常用到的算法,很多问题都可以用到它。回溯法是搜索算法的一种控制策略。它的基本思想是:从问题的某一种状态(一般是默认的初始状态)出发,搜索从这种状态出发所能达到的有状态,当一条路走到尽头时,就退原创 2021-04-03 13:25:07 · 585 阅读 · 0 评论 -
贪婪算法思想
贪婪算法思想贪婪算法的思想非常简单而且算法效率很高,在一些问题的解决上有着明显的优势。贪婪算法总是做出最好的选择。也就是说,贪婪算法并不从整体最优考虑,它所做出的选择只是局部最优选择。虽然贪婪算法不能对所有的问题得到最优的解,但是对于大部分的问题,它还是能产生最优解的。在一些情况下,即使贪婪算法也不能得到最优解,其最终结果却是最优解的近似解。算法思路 贪婪算法是一种不追求最优解,只希望的到较为满意解的方法。贪婪算法一般可以快速得到满意的解,因为它省去了为了找到最优解,要穷尽所有方法的时间。贪婪算法常原创 2021-03-27 15:23:01 · 2934 阅读 · 1 评论 -
递归算法思想
递归算法思想递归也是一种很常见的算法思想,使用该算法可以很有效的解决一些问题,往往可以简化代码的编写,提高可读性。但是如果有不适合的递归,反而会适得其反。算法思路:所谓递归,就是程序中不断反复的调用自身来解决问题的方法。这里强调的重点是调用自身,就是要求解的问题能够被分解成多个相同的小问题这样通过多次递归调用,自己便可以完成求解。递归算法的具体实现过程一般通过函数来完成。在函数的内部,编写程序时,直接或者间接的调用函数自己,即可完成递归操作。这种函数也可以叫做递归函数。在递归函数中,主调函数同时也时原创 2021-03-24 12:05:21 · 3372 阅读 · 0 评论 -
递推算法思想
递推算法思想该算法适用于有明确公式的情况,通过已知条件,利用特定的关系得出中间推论,逐步递推 ,最终的出结果。算法思想:包括顺推法和逆推法两种。1、顺推法所谓顺推法,就是指由已知条件,逐步推出要解决问题的方法。例如:斐波那契数列就是典型的顺推。2、逆推法:所谓逆推法,就是从已知的结果出发,用迭代表达式逐步推算问题开始的条件,即顺推的逆过程。...原创 2021-03-24 10:37:19 · 134 阅读 · 0 评论 -
高精度乘法详解
高精度乘法详解与加减不同的地方,乘除法是 用一个数的某一位乘或除另一个数的所有位。推荐先学完高精度加法和减法。高精度减法详解高精度加法详解存储方法和最高位去零方法差不多。这里具体讲解实现乘法竖式方法的方法。首先一个乘数的一位乘以另一个乘数的全部位数,可以用二重循环实现。发现C数组的下标是A,B数组下标之和。明白以上两点,离写出代码也不远了。接下来直接看代码吧。代码实现:#include <iostream>#include <cstring>us原创 2021-03-04 23:01:43 · 10093 阅读 · 3 评论 -
高精度减法详解
高精度减法详解建议先学习高精度加法:高精度加法详解当减数,被减数,差特别大时,大到无法用long long来存储,外面就需要使用高精度算法解决。算法基本思想:存储就是和加法差不多,都是用数组解决问题。计算就使用小学竖式计算即可。算法描述:字符数组存储。先字符数组存储,计算长度,比较减数和被减数的大小。将字符数组倒转存储在整数数组中将C[0]=A[0]-B[0],如果A[0]<B[0]则向前借位。如此持续循环解决注意最后结果C数组的最高位除零。最后逆序输出,得到结果。接着原创 2021-03-03 17:24:34 · 4341 阅读 · 5 评论 -
高精度加法详解
高精度加法详解对于加法学过编程的都知道,不过如果数据非常的大,大到无法用long long 这个数据类型储存,,特别是在这个大数据时代,这样的情况时有发生。这个时候就需要高精度算法来解决。算法基本思想:其实也很简单,首先,既然普通的数据类型不够大,那么我们干脆用数组来存储,这样就解决了数据溢出的问题。其次,要怎么进行计算呢?就是用小学学加法时候的笔算用代码表示出来。比如小学计算947+34=?这个问题时:如此,只要数组足够大,多大的数据我也可以计算出来。算法描述:定义三个字符数组a,b,分别用原创 2021-03-02 17:33:13 · 10440 阅读 · 4 评论 -
分治算法
分治算法分治即为分而治之将要求的较大规模的问题分割成K个更小规模的子问题。对于k个子问题分别求解。如果子问题的规模仍然还不够小,则在划分为k个子问题,如此递归下去,直到问题求解出来为止。将求出的小规模问题的解合并为一个更大问题的问题的解,自底而上逐步求解出原来的解...原创 2021-02-28 22:12:18 · 184 阅读 · 0 评论 -
递归
递归一、递归的算法思想递归:计算机、数学、运筹等领域经常使用的最强大的解决问题的方法之一,它用一种简单的方式解决那些用其他方法解起来很复杂的问题。递归的基本思想:把一个问题划分成一个或多个规模更小的子问题,然后用同样的方法解决。二、递归算法的基本设计步骤:找到问题的初始条件(递归出口),即当问题规模小到某个程度时,该问题就变得简单,能够直接求解。设计一个策略,用于将一个问题划分成一个或者多个一步步接近递归出口的相似的规模更小的子问题。将所解决的各个问题的解组合起来,即可得到问题答案。原创 2021-02-04 23:03:16 · 99 阅读 · 1 评论