文档详情

7计数排序和基数排序.pdf

发布:2018-03-12约7.46千字共48页下载文档
文本预览下载声明
How fast can we sort? 排序可以多快? • 插入排序、归并排序、快速排序,它们都 是基于比较的排序:即仅通过元素间比较 确定元素间的顺序。 • 这些基于比较的排序算法,其最坏情形下 的时间开销最小也是O(n lg n) 能否做到比O(n lg n)更好? • 通过决策树可帮助我们回答这个问题 决策树的例子 对a , a , …, a 排序 1 2 n 每个中间节点标记为i :j ,i, j ∈{1,2,…,n} • 左子树表示当a ≤ a 时接下去比较的情况; i j • 右子树表示当a ≥ a 时接下去比较的情况。 i j 决策树的例子 对a , a , …, a 排序 1 2 n 9, 4, 6 每个中间节点标记为i :j ,i, j ∈{1,2,…,n} • 左子树表示当a ≤ a 时接下去比较的情况; i j • 右子树表示当a ≥ a 时接下去比较的情况。 i j 决策树的例子 对a , a , …, a 排序 1 2 n 9, 4, 6 每个中间节点标记为i :j ,i, j ∈{1,2,…,n} • 左子树表示当a ≤ a 时接下去比较的情况; i j • 右子树表示当a ≥ a 时接下去比较的情况。 i j 决策树的例子 对a , a , …, a 排序 1 2 n 9, 4, 6 每个中间节点标记为i :j ,i, j ∈{1,2,…,n} • 左子树表示当a ≤ a 时接下去比较的情况; i j • 右子树表示当a ≥ a 时接下去比较的情况。 i j 决策树的例子 对a , a , …, a 排序 1 2 n 9, 4, 6 每个叶节点为一个排列π(1), π(2), …,π(n) 它表示序列aπ(1) ≤ aπ(2) ≤ … ≤ aπ(n) 已经建立。 决策树模型 决策树模型可以描述对任何基于比较的排序 算法: • 对于每个输入长度n有一颗决策树 • 算法中任何做比较时,都分为两种情况 • 决策树中包含了算法指令执行过程中的比较序列 • 算法执行时间恰好为到达叶节点的路径长度 • 最坏情形下的执行时间为决策树的高度 决策树排序算法的下限 定理:任何可对n个元素排序的决策树,其高 度一定为Ω(nlgn) 。 证明:树中一定包含有≥n !个叶节点,因为n 个元素具有n !个排列;高度为h的二叉树的 h h 叶节点数
显示全部
相似文档