zoukankan      html  css  js  c++  java
  • List

    Sort List
    Sort a linked list in O(n log n) time using constant space complexity

    在nlogn的复杂度下对一个链表进行排序。

    思路:在底层数据实现的条件下能达到nlogn复杂度的排序方法有以下几种,

    快排,在单链表条件下实现,有一个high--的倒退动作无法完成(或者说这个动作的完成本身就需要O(n)的复杂度)

    归并排序,在链表情况下,取中间值的操作复杂度大于O(1),平均复杂度应该是O(logn)。

    希尔排序,链表情况下,无法进行跨步式前进,->next仍然需要读一次内存,所以实现出来的效率甚至会高于O(n2)。

    堆排序,如果把链结构改成树结构,建堆的时间是nlogn,但是题中的节点并不具备两个引用域分别保存左子树和右子树。如果另行申请空间,空间复杂度为O(n),不符合常量空间的要求。

    接下来考虑快排,归并和希尔排序中各个操作的频率,首先可以排除掉希尔排序,快排中high--操作一共有的次数。

    不积跬步无以至千里,不积小流无以成江海。业精于勤而荒于嬉,行成于思而毁于随
  • 相关阅读:
    iPhone 调用Web Service 例子(转)
    iPhone开发:在UIAlertView中显示进度条(转)
    Oracel 分页
    NYOJ 477
    NYOJ 108(数组中存的是前n个数的和)
    NYOJ 199
    NYOJ 311(完全背包)
    高效斐数(前92位)
    NYOJ 57(6174问题)
    NYOJ 546(分珠宝)
  • 原文地址:https://www.cnblogs.com/weilf/p/3645839.html
Copyright © 2011-2022 走看看