![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法概论
仲翾123
这个作者很懒,什么都没留下…
展开
-
算法概论 第一讲 引入(基本的算法性能分析方法,基础)
原创 2019-05-31 18:09:39 · 130 阅读 · 0 评论 -
分治算法—expm1_1—用不同的partition方法实现快速排序
实现快速排序的算法,并尝试采用不同的方法实现线性的划分过程.方法一:选取数组中第一个元素作为阈值,指针从两端向中间移动,直到前面的指针大于到后面的指针,完成一次partition。int partition(int a[], int l, int r){ int temp = a[l]; int i = l; int j = r; while (i < j) {...原创 2019-06-01 11:13:39 · 198 阅读 · 0 评论 -
分治算法—expm1_2—求逆序数对数
有一个数的序列A[1]、A[2] 、A[3] 、…… 、A[n],若i<j,并且A[i]>A[j],则称A[i]与A[j]构成了一个逆序对,设计算法求数列A中逆序对的个数。方法:归并排序,只需要加一个变量存逆序数的对数即可。重点:两个数组merge的时候,两个数组之间逆序数的对数怎么求。如果前面数组中的ai>后面数组中的aj,那么逆序数的对数应该加(m+1-i),...原创 2019-06-01 11:44:57 · 296 阅读 · 0 评论 -
分治算法—expm1_3—求重要逆序数对数
引入逆序计数问题作为考察两个序列有多大差别的一个好的度量指标。但是人们可能感觉这个量度太敏感了。如果i<j,并且A[i]>2A[j],我们把这对i,j叫做重要的逆序。设计一个O(nlogn) 的算法计数在两个序列中的重要逆序个数。方法:归并排序思路,merge我用了两趟归并,一趟是专门求重要逆序数的对数,另一趟是将两个数组进行归并。(我想应该还有更好的方法,将两趟变成一趟)...原创 2019-06-01 12:17:46 · 570 阅读 · 0 评论 -
分治算法—work2_2_14—删除相同元素
题目:算法思路:基本思想是归并排序的思想,细节上有差异。在进行两个有序数组合并的时候,查找重复的字符,如果重复,其中一个指针移动,一个数只存一次,由于数组的长度发生了变化 ,需要返回删除重复字符后的数组最右边界,数组在合并时只对左右边界内的数据进行处理 。时间复杂度O(nlogn)int remove(int a[], int b[], int l, int l...原创 2019-06-01 12:34:08 · 273 阅读 · 0 评论 -
分治算法—work2_2_16—无穷数组中找元素x
题目:算法思想: 有logn 就得往二分的方向想,由于不知道数组的大小,也不知道有几个整数,从第一个元素开始查找x,以指数级的向后搜索,每次步长变为原来的两倍如果出现x<2^i,则从2^(i-1) 和2^i之间利用二分查找的方法查找x,如果a[2^i>n]>=Inf 则查找失败返回-1,返回查找到的位置,如果查找失败则返回-1 。const int I...原创 2019-06-01 13:10:16 · 405 阅读 · 0 评论 -
分治算法—work2_2_23—找主元(只能用“=”进行判断)
题目:算法思想:对于整个数组A,将其分成长度相差为1的两部分A1和A21、如果A1中没有主元素,且A2中没有主元素,则A中没有主元素2、如果A1中有主元素,A2中没有主元素,将A1中的主元素拿到A2中去比对,如果比对得到A1中主元素在A1、A2中的出现的次数大于数组A长度的1/2,那A1的主元素就是A的主元素3、如果A2中有主元素,A1中没有主元素,与情况2相似...原创 2019-06-01 13:54:15 · 840 阅读 · 0 评论 -
分治算法—expm2_1—k路合并
k-路合并操作问题假定有k个有序数组,每个数组中含有n个元素,您的任务是将它们合并为单独的一个有序数组,该数组共有kn个元素。设计和实现 一个有效的分治算法解决k-路合并操作问题,并分析时间复杂度。vector<int> merge(vector<int> left, vector<int> right){ vector<int&g...原创 2019-06-01 23:47:13 · 236 阅读 · 0 评论 -
分治算法—expm2_2—查找中项
查找中项问题对于长度为n的整型数组A,随机生成其数组元素值,然后实现一个线性时间的算法,在该数组中查找其中项。import java.util.ArrayList;import java.util.Random;public class Expm2_2 { public static void main(String[] args) { int n = 20; ...原创 2019-06-01 23:58:13 · 427 阅读 · 0 评论