题意:求正整数L和U之间有多少个整数x满足形如x=pk 这种形式,其中p为素数,k>1分析:首先筛出1e6内的素数,枚举每个素数求出1e12内所有满足条件的数,然后排序。对于L和U,二分查找出小于U和L的最大数的下标,作差即可得到答案。 1 #include 2 #include 3 #incl.....
分类:
其他好文 时间:
2015-01-06 21:15:02
阅读次数:
131
1 #include 2 #include 3 #include 4 5 #define ARRAY_SIZE 10 6 7 int binarySearch(int *arr, int size, int target) 8 { 9 int low = 0;10 in...
分类:
其他好文 时间:
2015-01-06 15:25:25
阅读次数:
145
当并算法具体解释请见点我想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~所以自己总结了一下,首先看sort函数见下表: 函数名 功能描写叙述 sort 对给定区间全部元素进行排序 stable_sort 对给定区间全部元素进行稳定排序...
分类:
编程语言 时间:
2015-01-06 15:14:43
阅读次数:
195
二分查找都好难啊... 路途漫漫兮。没看书之前自己第一遍的实现,循环的终止条件是仅仅判断mid值是否落在区间内。当然这个是错误的,而且比较愚蠢。第二次 查了下网上的实现后 把循环的判读条件改成了while(l > 1);就是数学公式 (a + b) / 2 = b + (b - a) / 2 得应用...
分类:
其他好文 时间:
2015-01-05 23:12:33
阅读次数:
271
【题目】
给定一个有序(非降序)数组A,可含有重复元素,求最小的i使得A[i]等于target,不存在则返回-1。
【分析】
此题也就是求target在数组中第一次出现的位置。这里可能会有人想先直接用原始的二分查找,如果不存在直接返回-1,
如果存在,然后再顺序找到这个等于target值区间的最左位置,这样的话,最坏情况下的复杂度就是O(n)了,没有完全发挥出二分查找的优势。
这里的...
分类:
编程语言 时间:
2015-01-05 13:02:16
阅读次数:
392
【题目】
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
【分析】
这道题最直观的解法并不难。从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N)。但这个思路没有利用输入数组的特性,我们应该能找到更...
分类:
编程语言 时间:
2015-01-05 00:39:45
阅读次数:
209
1 #include 2 3 int binarySearch(int *array, int length, int num); 4 int main(int argc, const char * argv[]) { 5 6 int array[] = {1, 2, 3, ...
分类:
编程语言 时间:
2015-01-04 21:15:04
阅读次数:
163
一、 题目
在一个数组中查询一个目标数,给出的是一个有序的数组、元素个数和目标数,不过特别的是这个数组可能是旋转(rotate)的。
例如:数组可能是 0、1、2、4、5、6
也可能是4、5、6、0、1、2
二、 分析
这个题首先我们会想到二分查找,但是仔细想想好像又不是,因为不一定是正序的,还有可能旋转,因为rotate的原因,如果我们取一半的时候...
分类:
其他好文 时间:
2015-01-03 22:27:21
阅读次数:
163
【思想】
二分搜索主要解决的问题是确定排序后的数组x[0,n-1]中是否包含目标元素target。
二分搜索通过持续跟踪数组中包含元素target的范围(如果target存在数组中的话)来解决问题。
一开始,这个范围是整个数组,然后通过将target与数组中的中间项进行比较并抛弃一半的范围来缩小范围。该过程持续进行,
直到在数组中找到target或确定包含target的范围为空时为止。在有...
分类:
编程语言 时间:
2015-01-03 18:42:25
阅读次数:
244
二分查找算法基本思想二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的...
分类:
编程语言 时间:
2015-01-02 22:17:22
阅读次数:
319