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
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
最近研究分布式数据库架构,发现排序、分组及分页让着实人有点头疼。现把问题及解决思路整理如下。 一、 多分片(水平切分)返回结果合并(排序) ??????????1、Select + None Aggregate Function的有序...
分类:
数据库 时间:
2014-09-18 11:42:34
阅读次数:
293
1:合并排序 合并排序算法使用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最后总将排好序的子集合合并成所要求的排好序的集合。算法描述如下:void MergeSort(Typr a[],int left,int right....
分类:
其他好文 时间:
2014-09-16 12:15:50
阅读次数:
163
题目:只允许交换相邻元素的排序,统计将最小交换次数。
分析:分治,逆序数。在合并排序的过程中进行逆序对的求解。
合并A,B两个字串时利用两根指针作为计数;
当B中元素放入新数组时A中所剩元素一定大于B;
每次计数加和即可。
说明:置换群 可以用来计算任意最小交换。。。 (2011-09-20 14:25)
#in...
分类:
其他好文 时间:
2014-09-16 09:17:40
阅读次数:
173
上篇文章讲到插入排序算法,是一个标准的增量方法:在排好的子数组后,将元素插入,形成新的数组。今天要介绍的是一种新方法:分治法。 分治法,将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就能得到原问题的解。在每一层递归上都会有三个步骤:分解:将原问题...
分类:
其他好文 时间:
2014-09-14 19:14:37
阅读次数:
199