思想:循环有序数组最大的特点是利用二分查找时,有一边总是有序的,利用这个特点,利用value存储历史最小值
当左边有序,则用A[low]与value比较即可得出当前左边的最小值,然后跳转到右边看是否存在更小的;
如果右边有序,则用A[mid]与value比较,得出右边的最小值,然后跳转到左边查看是否有更小的。
算法复杂度为O(logn)
代码如下:#include
#include
#in...
分类:
其他好文 时间:
2014-09-13 12:06:55
阅读次数:
244
转自:http://blog.csdn.net/cjf_iceking/article/details/7953637间间断断的将9种排序实现,并且将其以博客笔记的形式记录下来;现在就该来综合的分析这九种排序,让我们先来看看其算法复杂度和稳定性的分析结果:算法复杂度以及稳定性分析算法名称平均时间辅助...
分类:
其他好文 时间:
2014-09-10 22:20:51
阅读次数:
326
从今天开始每天争取自己手写一两个小程序,即使是从书上看的,或者从网上学的,都自己手动地把代码打出来,贴在这里。培养自己这个习惯,尽最大可能坚持下来。水滴石穿,绳锯木断。2014年9月10日今天学习的是:求最大子序列和有三种算法:1 复杂度为O(N2) 1 package findmaxsub; 2 ...
分类:
其他好文 时间:
2014-09-10 21:01:21
阅读次数:
279
插入排序的算法复杂度为O(n2),但假设序列为正序可提高到O(n),并且直接插入排序算法比較简单,希尔排序利用这两点得到了一种改进后的插入排序。一. 算法描写叙述希尔排序:将无序数组切割为若干个子序列,子序列不是逐段切割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小.....
分类:
其他好文 时间:
2014-08-31 20:02:41
阅读次数:
224
本文介绍求出1~n内的所有素数的有效算法——埃拉托色尼筛法(the Sieve of Eratosthenes),估计其算法复杂度,并介绍其改进——线性时间筛法。以下内容谢绝转载。 ...
分类:
其他好文 时间:
2014-08-22 23:45:49
阅读次数:
357
问题: 给你两个排序的数组,求两个数组的交集。
比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5.
思路:
1. 每一次从B数组中取一值,然后在A数组里逐个比较,如果有相等的,则保存。该算法复杂度为 O(MN). M, N 分别为数组 A B 的长度。
2. 因为A B 都排过序,所以,每一次从B数组取值后,可以利用二分查找看是否在数...
分类:
其他好文 时间:
2014-08-12 22:03:55
阅读次数:
219
转自:http://blog.csdn.net/flyyyri/article/details/5154618 1.算法复杂度分为 时间复杂度和空间复杂度。 作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。 2. 一般情况下,算法的基本操作重复执行的次数...
分类:
其他好文 时间:
2014-08-11 02:38:01
阅读次数:
200
这道题第一眼看见题目所给的时间就有一种预感,仅仅是600ms,运行的算法复杂度稍微高一点就会超时。那么我首先是犯傻想偷偷懒,直接是调用一个系统库函数strstr(),希望它能够完成自己的题目,但是显然是超时的。百度了一下它的实现方法是直接采用没有优化的算法,复杂度是最高的。但是由于自己压根就不会写字...
分类:
其他好文 时间:
2014-08-09 18:15:38
阅读次数:
291
算法复杂度分为时间复杂度T(n)和空间复杂度F(n)时间复杂度:也就是执行算法程序所需的时间,与硬件的速度、编程语言的级别、编译器的优化、数据的规模、执行的频度有关,前三个有很大的不确定性,所以衡量指标只要是后两者即算法的时间复杂度是数据规模n的函数。T(n)=O(F(n)),其中O表示同阶,即当n...
分类:
其他好文 时间:
2014-08-08 15:31:56
阅读次数:
202
1. 算法复杂度分为 时间复杂度和空间复杂度。 作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。 2. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n)) 分析:随着模块n的增大,算法...
分类:
其他好文 时间:
2014-08-03 17:57:45
阅读次数:
235