摘要: 本章先回顾了前面介绍的合并排序、堆排序和快速排序的特点及运行运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于输入元素间的比较,称这种算法为比较....
分类:
编程语言 时间:
2014-11-03 14:15:19
阅读次数:
301
最大子数组问题方法一:暴力求解方法我们可以很容易地设计出一个暴力方法来求解本问题:简单地尝试没对可能的子数组,共有O(n2)种#includeusing namespace std;#define INT_MIN 0x80000000int main(){ int arr[10]={9,8,-...
分类:
编程语言 时间:
2014-11-01 21:45:16
阅读次数:
296
Sort a linked list in O(n log n) time using constant space complexity.
思路:要想时间复杂度达到O(n log n)
,那么有两种,一种是合并排序,另一种是快速排序,而要想空间复杂度为常数,那么只能使用递归,本人使用的是递归的合并排序,代码如下:
/**
* Definition for s...
分类:
其他好文 时间:
2014-10-22 12:55:55
阅读次数:
200
堆数据结构实际上是一种数组对象,是以数组的形式存储的,可是它能够被视为一颗全然二叉树,因此又叫二叉堆。堆分为下面两种类型:大顶堆:父结点的值不小于其子结点的值,堆顶元素最大小顶堆:父结点的值不大于其子结点的值,堆顶元素最小堆排序的时间复杂度跟合并排序一样,都是O(nlgn),可是合并排序不是原地排序...
分类:
编程语言 时间:
2014-10-20 21:14:02
阅读次数:
239
算法1. 图搜索(广度搜素、深度搜索)深度优先特别重要2. 排序3. 动态规划4. 匹配算法和网络流算法5. 正则表达式和字符串匹配6. 三路划分-快速排序7. 合并排序(更具扩展性,复杂度类似快速排序)8. DF/BF 搜索 (要知道使用场景)9. Prim/Kruskal(最小生成树)10. D...
分类:
其他好文 时间:
2014-10-20 17:02:54
阅读次数:
212
分治策略中,我们递归地求解了一个问题,在每层递归都应用了三步1.分解,将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小2.解决,递归地求解出子问题,如果子问题的规模足够小,则停止递归,直接求解3.合并,把子问题的解给合并为原问题的解当子问题足够大的时候,需要递归,那就是递归情况当问题足...
分类:
编程语言 时间:
2014-10-14 19:40:09
阅读次数:
165
Sort a linked list inO(nlogn) time using constant space complexity.1、分析该题主要考查了链接上的合并排序算法。2、正确代码实现package com.edu.leetcode;import com.edu.leetcode.List...
分类:
编程语言 时间:
2014-09-29 03:09:07
阅读次数:
315
归并排序
O(NlogN),所以归并排序最坏情况能够达到快速排序的平均水准
需要额外的存储空间O(n)
1、对数据不断的分割,直到剩下一个一个的
2、合并数据,在合并的时候,其实是两个有序的数组,因此
这个过程是两个有序数组进行合并排序
// 归并排序
// O(NlogN),所以归并排序最坏情况能够达到快速排序的平均水准
// 需要额外的存储空间O(n)
...
分类:
其他好文 时间:
2014-09-22 03:03:21
阅读次数:
154