zoukankan      html  css  js  c++  java
  • 算法导论: 第8章

    8.1-4 n/k个k大小的有序子序列排序

    每个k大小的序列有k!种排列可能,所以n/k个子序列有(k!)^(n/k)个子序列,也即决策树至少要有这么多个叶子。设树高为h,则有

    2^h >= (k!)^(n/k),得h >= lg((k!)^(n/k)) = (n/k)lg(k!) >= (n/k)lg((k/2)^(k/2)) = (n/2)lgk

    8-3 排序不同长度的数据项

    a) 先用计数排序按“数字位数”进行排序,然后再用基数排序对位数相同的每个桶内的数字排序。

    b) 根据第一个字母排序(计数排序),然后对第一个字母相同的每组递归用按首字母排序计数排序。

    8-5 平均排序

    d) 建立k个筐,然后依次循环放入元素:a[1]->1筐,a[2]->2筐,……,a[k]->k筐;然后循环,a[k+1]->1筐,a[k+2]->2筐

    这样,最后将n个元素放完后,就有k个完全不重叠的筐,依次为:

    1筐:{a[1],a[1+k],a[1+2k],a[1+3k]};

    2筐:{a[2],a[2+k],a[2+2k],a[2+3k]};

    ……

    每个筐最多有n/k个元素,排序用(n/k)lg(n/k),总共用O(nlg(n/k))

    e)如d中一样分筐,则每个筐内的元素已经是排好序的,然后对这k个筐进行k路归并(维护一个k元素的最小堆)

  • 相关阅读:
    小数据池与编码新知
    你确定自己用过字典?
    Django基础三之视图函数
    Django基础二之URL路由系统
    Django基础一之web框架的本质
    CSS
    前端HTML
    MySQL创建用户和授权
    MySQL之索引原理
    Mysql之视图,触发器,事物,存储过程,函数
  • 原文地址:https://www.cnblogs.com/rolling-stone/p/3655250.html
Copyright © 2011-2022 走看看