南邮研一算法课
主要的算法作业
富江川
交流_学习
展开
-
分治法实现大数相乘二进制(java)
算法原理 大数相乘也采用分治法的思想,即将一个大数分成若干小数去计算。 通过计算多组2位数整数乘法,可以得出来一个规律AB * CD = AC (AD+BC) BD。如果BD相乘超过一位数,需要进位;(AD+BC+低位进位)如果超过一位数,需要进位。 假设M位二进制数和N位二进制相乘, 如果两个数M和N的长度都小于等于1位数,则直接返回X*Y的结果的字符串形式。 如果M、N长度不一致,补齐M高位0(不妨设N>M),使都为N位整数。 N/2取整,得到整数的分割位数。将M、N拆分成m1、m2,n1,n2.原创 2021-10-15 21:08:55 · 957 阅读 · 0 评论 -
分治法实现三分搜索算法(java版)
算法原理 三分搜索和二分搜索类似,采用分治法。即将一个序列分为三组,对每组的序列继续分三组,一直分到只有一个元素为止。优点是查找速度快,缺点就是需要有序的序列。 首先将有序序列分成三组,将中间两个分组的点与关键字X进行比较,如相同则退出找到,若不相等,在根据关键字与节点的大小比较在哪个组里,然后继续分组比较。重复上述过程,直到找到满足条件的记录。 算法流程 假设有序序列为a={1,2,3,4,5,6,7,8,9}。查找元素x=8,流程如下: 首先将序列分成三组,令mid1=3,mid2=6。 第一次..原创 2021-10-15 20:57:47 · 1022 阅读 · 0 评论