1、二分查找(1)、二分查找递归实现#include<stdio.h>
#defineNOT_FOUND-1;
intbinSearch(int*a,inthead,inttail,intkey);
intbinSearch(int*a,inthead,inttail,intkey){
intmiddle;
if(head<=tail){
middle=(head+tail)/2;
if(key==a[middle]){
returnmiddle;
}
..
分类:
其他好文 时间:
2017-02-17 10:28:56
阅读次数:
213
第一题: 问题名称:整数划分问题。 问题描述:正整数n可以表示为一系列正整数之和:n = n1 + n2 + ... + nk (k>=1, n1>=n2>=nk ),则称这种表示为正整数n的划分,不同的这种表示的个数称为正整数n的划分数,记为p(n)。在所有划分中,将最大加数n1不大于m的划分数, ...
分类:
其他好文 时间:
2017-01-09 20:16:36
阅读次数:
193
FFT 做 高精度乘法 @Author: YouSiki ...
分类:
其他好文 时间:
2016-12-21 18:35:21
阅读次数:
232
思想: 合并排序算法的分治策略是将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。 ...
分类:
编程语言 时间:
2016-12-13 07:02:26
阅读次数:
170
数组可以实现的算法很多,典型应用就是大整数相乘问题。利用的思想非常巧妙,感觉和链表实现多项式运算有异曲同工,大整数相乘主要避免计算机存储精度不够的时候。按照基本的乘法运算实现即可! 主要注意返回指针类型,和关键点k=i的技巧。 ...
分类:
其他好文 时间:
2016-12-04 19:31:45
阅读次数:
142
归并排序是创建在归并操作上的一种有效的排序算法,效率为O(nlogn),1945年由冯·诺伊曼首次提出。 归并排序的实现分为递归实现与非递归(迭代)实现。递归实现的归并排序是算法设计中分治策略的典型应用,我们将一个大问题分割成小问题分别解决,然后用所有小问题的答案来解决整个大问题。非递归(迭代)实现 ...
分类:
编程语言 时间:
2016-12-03 18:37:36
阅读次数:
162
一、冒泡排序 冒泡排序是一种简单的排序算法。它重复的走访过要排序的数列,一次比较两个元素,如果它们顺序错误就把他们交换过来。 二、快速排序 使用分治策略把一个序列分成两个子序列。 此外还有选择、插入、归并排序。代码如下: ...
分类:
编程语言 时间:
2016-11-24 21:32:23
阅读次数:
254
大整数乘法,可以用单个数字想乘,跟踪进位信息来处理。 大整数除法,可以先把除数增大到跟被除数相同的量级,然后累计相减。比如 555 / 3,就先把3增大到300,555能够减1次,那么结果+100,被除数变成255,依次进行。 楼梯走法:一次走一级,或者走两级。没什么难度。 数组中不同数字:如果是2 ...
分类:
编程语言 时间:
2016-10-18 11:21:56
阅读次数:
203
以下实现最大子数组的分治策略,算法来自《算法导论》 #include<iostream> using namespace std; struct ans { int low; int high; int sum; }; ans MAXIMUM_CROSSING_SBUARRAY(int * A, i ...
分类:
编程语言 时间:
2016-10-11 19:03:02
阅读次数:
319
题目:输入两个大整数,用数组保存每一位数,然后用分治法计算; 思路:输入X Y,X高位用A数组保存,低位用B数组保存,Y高位用C数组保存,低位用D数组保存,则:X=A*10^(n/2)+B Y=C*10^(n/2)+D 分治方法:X*Y=A*C*10^n+((A-B)*(D-C)+A*C+B*D)* ...
分类:
其他好文 时间:
2016-09-16 12:41:58
阅读次数:
179