
算法
文章平均质量分 63
实战
花狗Fdog
在人之上,要把人当人,在人之下,要把自己当人。
展开
-
C++ 解决大数运算(大数加法,大数幂运算,大数求余)
文章目录1. 大数加法2. 大数幂运算3.大数求余废话不多说,直接上代码了。1. 大数加法string getCountAdd(string a, string b){ string c = ""; int bit = -1; //判断是否进位 -1为否,其他为进位数 int i = a.length()-1; //获得a字符串长度 int j = b.length()-1; //获得b字符串长度 //第一种情况 两者都处理完 while (i != -1 && j !原创 2021-04-04 19:54:34 · 7432 阅读 · 12 评论 -
非对称性加密算法——RSA算法原理及C++实现
文章目录一. 前言二. 什么是非对称加密算法三. 双方交换信息工作流程四.密钥生成数学原理五.总结公钥和私钥生成步骤六.解决大数运算1.getCountAdd() 解决大数相加2. getCountExp() 解决大数幂运算3. getCountmod() 解决大数求余七.举个例子八.完整代码1.随机生成随机数2. 判断是否为质数3. 最大公约数(辗转相除算法)4.核心代码一. 前言最近想模仿一下qq,做一个通信软件,这是qq的登录界面,当我们选择记住密码后,每次运行qq,就会显示已保存的密码,.原创 2021-04-04 17:00:38 · 15680 阅读 · 39 评论 -
快速排序
快速排序快速排序是对冒泡排序的一种改进。它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归或者非递归进行,以此达到整个数据变成有序序列。快速排序过程图:快速排序和归并排序有一些相同点和一些不同点,比如两种都使用了分治的思想,都是递归+排序,不同点在于归并排序是先递归后排序,而快速排序是先排序,后递归。快速排序原理1)设置两个变量i、j,排序开始的时候:i=0,j原创 2021-02-17 16:02:43 · 2271 阅读 · 19 评论 -
堆排序
堆排序堆排序顾名思义,就是使用堆这种数据结构进行排序,什么是堆呢,堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。堆总是满足下列性质:堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一棵完全二叉树。将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。使用堆排序,第一步是将无序序列结构转变为一个大顶堆或者小顶堆,然后将堆顶元素与末尾元素进行交换,使末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素交换,得到第二大元素。原创 2021-02-17 15:53:59 · 3259 阅读 · 23 评论 -
归并排序
归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。经典的分治(divide-and-conquer)策略:分解:把一个问题分解成多个子问题,这些子问题是更小实例上的原问题。解决:递归地求解子问题,当子问题足够小时,按照基础情况来求解。合并:把子问题的解合并成原问..原创 2021-02-17 15:50:43 · 2287 阅读 · 20 评论 -
插入排序
插入排序,百度百科上面有一个不错的例子是这样描述插入排序的,插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌...原创 2021-02-17 15:32:23 · 3929 阅读 · 22 评论 -
选择排序
选择排序(Select Sort) 是直观的排序,通过一个中间量从带排序的的数中找出最大或最小的交换到对应位置。再选择次之。选择排序和冒泡排序一样,都有两层循环,还记得上一篇讲过的冒泡排序吗,忘了的话点我回顾。让我们通过动态图来看一下选择排序的过程图:让我们通过动态图来看一下选择排序的过程图:这个动态图演示了一个无序数组使用选择排序转变为一个从大到小的有序数组,让我们来观察一下,在进入内循环之前,会记录一个值,这个值是当前外层循环A[i]的值,之后拿着这个值,在内循环遍历数组的时候,跟数组的元素..原创 2021-02-17 15:01:44 · 19400 阅读 · 35 评论 -
冒泡排序
1. 前言轮子哥曾经在知乎里讲过这么一个事,当年他毕业的时候,有一个公司(微软)来上海招聘。第一轮笔试出的算法题是冒泡排序,全场只有一半的学生写了出来。你可能会疑问冒泡怎么简单,怎么可能,哈哈,别急,冒泡排序虽然是最简单的算法,但是如果现在让屏幕前的你写,能立马写出来的在下面评论!所以往往看似越简单的东西,越是能考查我们的基本功。这篇文章,就让小编带你学习一下冒泡排序吧。2. 冒泡算法这个算法的名字由来是因为越小的元素会经由原创 2021-02-17 14:58:27 · 8958 阅读 · 38 评论 -
用例子理解递归
在说什么是递归之前,我想屏幕前的你应该会使用循环来解决一些问题了。那循环又是什么呢?循环是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。 例如:1+2+3+4+……+10等于多少?第一种按照数学方法使用等差数列的公式来解决。第二种解决方法就是可以使用循环来解决。第三种解决方法就是使用..原创 2020-11-08 21:47:01 · 4203 阅读 · 27 评论