基本算法
adawangyi
这个作者很懒,什么都没留下…
展开
-
基础算法-快速排序算法
时间复杂度:最坏的情况和冒泡排序一样,为o(n^2) 平均的时间复杂度:Nlog(N) 基本思想: 1、取最左边的数作为标准 2、从右边开始查找,找到从右边数第一个小于标准temp的数 3、从左边继续查找,找到第一个大于标准temp的数 4、将左右两边找到的数进行交换,如此往复,直到左边和右边碰到一起,即i==j原创 2015-03-10 10:14:04 · 320 阅读 · 0 评论 -
基础算法-二分查找
前提条件:变化较小的升序数组 时间复杂度:log(n) 基本思想:将数组的中间值与目标值进行比对,如果mid大于目 标值,则在左半边进行第二次查找,如果mid小于目标值,在右半边进行查找。 代码: int bsearch(int num[], int start, int end, int target) {原创 2015-03-10 09:20:02 · 428 阅读 · 0 评论 -
c++新语法
参考网址:http://developer.51cto.com/art/201312/422379.htm其中对于for的遍历有了新的含义,可以自带iterator在C++中for循环可以使用类似java的简化的for循环,可以用于遍历数组,容器,string以及由begin和end函数定义的序列(即有Iterator),示例代码如下:map<string, int> m{{"a", 1}, {"b原创 2015-03-10 16:07:21 · 419 阅读 · 1 评论 -
基本算法-归并排序
归并排序:是一种较稳定的排序算法 时间复杂度:nlogn 基本思想:将一个数组进行拆分成两两一组,然后分别对每组进行排序组合。 基本算法://将有二个有序数列a[first...mid]和a[mid...last]合并。 void mergearray(int a[], int first, int mid, int last, int temp[]) { int i = first,原创 2015-03-10 21:27:21 · 264 阅读 · 0 评论 -
动态规划方法
1、思想:避免重复的计算,先将计算过的值保存下来,如果发现有相同的步骤,直接将事先保存好的值拿出来。 动态规划其实质上是通过开辟记录表,记录已求解过的结果,当再次需要求解的时候,可以直接到那个记录表中去查找,从而避免重复计算子问题来达到降低时间复杂度的效果。实际上是一个空间换时间的算法。 动态规划,在一步选择的时候,是通过从以前求出的若干个与本步骤相关的子问题最优解中原创 2015-05-08 17:36:17 · 217 阅读 · 0 评论