Problem Description:
Sort a linked list in O(n log n)
time using constant space complexity.
分析:对链表进行排序,思考排序算法时间复杂度为O(nlogn)的只有归并,快排和堆排序,应用到链表上的归并比较合适,这里利用快慢指针找到链表的中间节点,然后分别对两边递归归并排好序后将两边归并即可得到最终...
分类:
其他好文 时间:
2014-08-13 22:25:57
阅读次数:
234
希尔算法简介 常见排序算法一般按平均时间复杂度分为两类:O(n^2):冒泡排序、选择排序、插入排序O(nlogn):归并排序、快速排序、堆排序简单排序时间复杂度一般为O(n^2),如...
分类:
编程语言 时间:
2014-08-13 21:57:07
阅读次数:
271
在面对大数据量的排序时(100W以上量级数据),通常用以下三种的排序方法:快速排序、归并排序,堆排序。在这个量级上,其他冒泡,选择,插入排序等已经根本没法看了,效率极低,跟前面三种排序差了千百倍,因此不作比较。这三种排序的平均时间复杂度均为O(nlogn),快速排序,归并排序在面对基本有序序列排序时...
分类:
编程语言 时间:
2014-08-12 21:36:44
阅读次数:
286
\(O(nlogn)\)可能会超时,最优二叉树有\(O(n)\)的做法,当年合并果子全机房就我最快,哈哈。。开两个队列,一个存放未合并的节点,一个存放合并之后的子树,每次取最小时只需考虑这两个队列中的最小值即可,可以证明在队列内的元素单调。notice: 输入数据已经排好序了,Characters ...
分类:
其他好文 时间:
2014-08-11 08:22:41
阅读次数:
459
1 //Accepted 4372 KB 140 ms 2 //dp 最长上升子序列 nlogn 3 #include 4 #include 5 #include 6 using namespace std; 7 const int imax_n = 500005; 8 int ...
分类:
其他好文 时间:
2014-08-10 15:32:50
阅读次数:
199
说明:归并排序: 时间 O(nlogn),空间 O(1). 每次将链表一分为二, 然后再合并。快排(用两个指针)
说明: 与顺序表不同的时,每次找插入位置时从头开始走。
分类:
其他好文 时间:
2014-08-10 01:40:39
阅读次数:
226
归并排序法是一个基于分治法的比较排序方法,其最差情况复杂度为O(nlogn),而快速排序法的复杂度在最差情况下达到O(n2)本文使用PHP来讨论其算法过程:假设对乱序数列进行排序 $input = array(11,5,1,4,8,7,9,2);思路可以表示:(图是PPT画的,比较简单,请看官见谅)...
分类:
其他好文 时间:
2014-08-09 11:20:37
阅读次数:
398
RMQ(Range Minimum/Maximum Query)问题是求区间最值问题。对于长度为 n 的数组 A,进行若干次查询,对于区间 [L,R] 返回数组A中下标在 [L,R] 中的最小(大)值。可以用线段树来解决这个问题,预处理的复杂度是 O(nlogn),查询的复杂度是 O(logn)。更...
分类:
其他好文 时间:
2014-08-08 17:34:26
阅读次数:
200
堆排序的时间复杂度是O(nlogn),下面上代码
public class HeapSort {
public void adjustHeap(int[] in, int index, int length) {
int leftcIndex = index * 2 + 1;
int rightcIndex = index * 2 + 2;
int bigest = index;...
分类:
其他好文 时间:
2014-08-08 16:04:16
阅读次数:
210
15.Sort List--链表在O(nlogn),常数空间内完成排序关键点:中间分裂链表,采用双指针归并排序 中间分裂链表的方法:快慢指针,快指针走两步,这样就可以找到中间的了C++:http://blog.csdn.net/jiadebin890724/article/details/213.....
分类:
其他好文 时间:
2014-08-06 01:33:30
阅读次数:
232