二分
myy_cjw
这个作者很懒,什么都没留下…
展开
-
分治法查找第k小/大的数
1.问题数学语言:给无序序列集中有n个元素,查询次数m和一个整数k,1<=k<=n,找出这n个元素中第k大的元素。2.解析利用快速排序,可以从序列中取一个中点mid,然后把序列分成小于等于mid和大于等于mid的两部分,由两个部分的元素个数和k的大小关系可以确定这个数是在哪个部分,以此类推,进行递归查找。3.设计if (两边指针相交) return -1; if (两...原创 2020-03-31 18:35:17 · 1914 阅读 · 0 评论 -
最近点对问题(分治法以及蛮力法的运用)
1.问题数学语言:设p1=(x1,y1),p2=(x2,y2)…pn=(xn,yn)是平面n上n个点构成的集合S,找出集合S中距离最近的点对就是集合里的最小点对,两者的距离就是最小对距离。2.解析(1)将集合S分成两个子集S1和S2,每个子集中大约有n/2个点,设集合S的最近点对是pi和pj(1<=i,j<=n)则有以下三种情况1.pi∈S1,pj∈S12.pi∈S1,pj∈...原创 2020-03-24 19:10:09 · 1426 阅读 · 0 评论 -
归并排序Mergesort
1.问题数学语言:对n个不同的数构成的数组A进行排序,其中n=2^k2.解析把一个无序的数组分成n个数据,每个数据本身比较合并一次,之后再和下一个数组比较并合并,以此类推。3.设计merge(int A[], int l, int r, int mid) { i = l; j = mid + 1;//新建a数组,用于归并排序 for (k = l; k <= r; k++)...原创 2020-03-17 19:19:05 · 357 阅读 · 0 评论 -
两个简单的查找算法-遍历查找和二分查找
1.问题数学语言:给定一个有序数组T,从里面寻找值为n的元素,并输出下标,若元素不存在就输出0。查找问题。2.解析用两种算法写这个问题,最暴力的肯定就是O(n)的遍历算法,遍历整个数组查找是否有值相等的数据;而第二种优秀很多的算法明显就是二分查找啦,精度相同的情况下查找速度提高非常大,时间复杂度仅仅是O(logn)。3.设计遍历:for (i = 1; i <= n; i++)...原创 2020-03-10 18:34:09 · 413 阅读 · 0 评论