随笔分类 - 分治算法
基础算法
摘要:二分查找算法问题一、在一个有序的序列(不降序列)中查找指定值的算法,查找成功返回它所在的位置,否则返回-1int binarySearch(int a[],int l,int r,int x){ int ans=-1; while(l<=r) { int m=l+(r-l)/2; if (a[m]=
阅读全文
摘要:归并排序,分治的典型应用,归并排序的实现有两种方法1.自上而下的递归2.自下而上的迭代 算法思想:1.申请空间,使其大小为两个已排序序列之和,该空间用来合并后的序列。2.设两个指针,最初位置分别在两个排序序列的起始位置。3.比较两个指针所指向的元素,选择相对小的元素放入合并空间,并移动到下一个位置。
阅读全文
摘要:算法思想:1.从一个新数列中挑选一个元素称为“基准”pivot。2.重新排序数列所有元素。比基准值小的摆放在基准元素之前,所有比基准值大的元素摆放在基准之后(相同的数可以摆放到任意一边)。在这个分区退出之后,该基准元素处于数列的中间位置。这个操作叫分区(partition)操作。3.递归地(recu
阅读全文
摘要:汉诺塔是计算机学教科书中常用的游戏,用来说明递归的魔力。该游戏有3个柱子和一组不同大小的圆盘,柱子从圆盘的中心穿过。游戏开始时,所有圆盘叠放在左侧第一个柱子上,如图 1 所示。 游戏的目标是将所有的圆盘从第一个柱子移动到第三个柱子,同时遵守以下规则: 1.除了被移动时,所有圆盘都必须放在柱子上。2.
阅读全文
摘要:题目描述 给出一个长度为n 的序列a,选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数,表示序列的长度 n。 第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 a[i]。 输出格式 输出一行一个整数表示答案。 输入输出样例 输入 #172 -4 3 -1 2 -4
阅读全文