原理 归并排序(merge sort)采用经典的分治策略,将两个有序的数列合并成一个大的有序的序列,通过递归,层层合并。 流程 对于两个有序的序列合成一个有序的序列,比如 要将 【4,5,7,8】和【1,2,3,6】最终合成【1,2,3,4,5,6,7,8】 代码 复杂度 归并排序是稳定排序,它也是 ...
分类:
编程语言 时间:
2018-11-06 00:57:36
阅读次数:
219
题目大意:给定一棵 N 个节点的无根树,边有边权,统计树上边权和不大于 K 的路径数。 对于每条树上路径,对于每一个点来说,该路径只有经过该点和不经过该点两种情况,对于不经过该点的情况,可以转化成是否经过以该点为树根的子树节点的子问题,由此构成一个分治策略。 对于点分治来说,限制算法复杂度的瓶颈之一 ...
分类:
其他好文 时间:
2018-11-06 00:47:43
阅读次数:
140
1、什么是二分思想? 二分思想可以理解为是一种将一个大问题分成两个子题,当每次分析完两个子问题后,舍弃其中一个不符合条件的子问题,再将符合条件的子问题一分为二,反复循环搜索判断的操作,直至找到所求的数值或者子问题不能再一分为二时为止的思想。 2、二分搜索算法 二分搜索算法是运用二分思想和分治策略的典 ...
分类:
其他好文 时间:
2018-10-22 20:40:56
阅读次数:
164
对二分法的学习体会以及关于结对编程的体验分享 1) 二分搜索技术 a) 顺序搜索方法:逐个比较a[0: n-1]中元素,直至找出元素或搜索整个数组后确定x不在其中。该方法没有很好地利用n个元素已排好序这个条件,因此在最坏的情况下,顺序搜索方法需要O(n) 次比较。 b) 二分搜索方法:将n个元素分成 ...
分类:
其他好文 时间:
2018-10-22 00:02:46
阅读次数:
238
一、对二分法思想的体会 1.二分法是运用分治策略的典型例子,也称折半查找,充分利用了元素间的次序关系,是一种效率较高的查找方法。实现二分算法有递归和非递归两种方式。 2.基本思想:将n个元素分成大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果a<[n/2],则 ...
分类:
其他好文 时间:
2018-10-21 16:55:43
阅读次数:
168
1.二分法思想:二分搜索算法是运用分治策略的典型例子。二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只在数组a的左半部继续搜索x;如果x>a[n/2],则只在数组a的右半部继续搜索x。通过二分搜索 ...
分类:
其他好文 时间:
2018-10-21 12:15:05
阅读次数:
169
一、对二分算法理解 二分算法,又称折半算法,是应用分治策略的典型例子。二分查找主要对有序序列进行对所指定数字的查找,通过不断缩小搜查范围,在比较中间的数后对左右两个数组进行相同操作,以得到最终的带查找数字。时间复杂度logn,对数组较大时能显著提高程序效率。 二、算法代码 ...
分类:
编程语言 时间:
2018-10-20 18:34:02
阅读次数:
122
一、对二分法思想的理解 1.特点:又称为折半算法,是分治策略的一个典型例子。主要是用于:在已排好序的n个元素组成的数组a[0:n-1]中,找出一个特定的元素x。 2.基本思想:(1)将n个元素分成个数大致相同相同的两半,然后取a[n/2]与x作比较。 (2)如果x = a[n/2],则已找到x,返回 ...
分类:
其他好文 时间:
2018-10-19 02:13:53
阅读次数:
153
20172327 2018 2019 1 《程序设计与数据结构》第五周学习总结 教材学习内容总结 第九章 排序与查找 查找 1.查找:在某个项目组中找到指定元素或判断是否存在。该项目组被称为查找池。 2.常见查找方式,线性查找。 3.查找目标:高效地完成查找,用最小化比较操作。通常查找池中项目数目定 ...
分类:
其他好文 时间:
2018-10-18 01:03:30
阅读次数:
146
第二章是递归和分治策略,通过Hanoi塔问题、排列问题等学习递归的思想,通过二分搜索算法、大整数乘法等学习了分治法的思想,并学习了归并排序和快速排序两种排序方法。PTA上的问题一是找第k小的数,用到了快速排序的方法对数组进行排序,同时在寻找第k小的数时递归调用int find(int a[],int ...
分类:
编程语言 时间:
2018-10-06 21:38:48
阅读次数:
169