def:之前所有的排序算法中,各元素的次序依赖于它们之间的比较,我们把这类排序算法称为比较排序算法。
8.1.排序算法的下界
def:决策树是一棵二叉树,它可以表示在给定输入规模情况下,某一特定排序算法对所有元素的比较操作。即将所有比较后的次序描述为一条到达叶子节点的路径,而这个路径唯一,叶子节点的排列也是唯一的,对n个元素的排列有n!种排列,叶子节点的个数也为n!与排列数相同可以一一对应。
ps:书上说决策树是一棵完全二叉树,但是给的配图却是非完全二叉树,根绝上下文的描述来看决策树叶并非是一棵完全二叉树。
8.2. 计数排序
假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数。对每个输入元素x,确定小于x的元素的个数,利用这一个信息就可以直接把x放到它输出数组的位置上。
def COUNTING_SORT(A, B, k):
#初始化
C = [0 for i in range(0, k+1)]
#确定每个元素的个数
for j in range(0, len(A)):
C[A[j]] = C[A[j]] + 1
#确定小于某个元素的个数
for i in range(1, k+1):
C[i] = C[i] + C[i-1]
#输出到对应的位置上,并调整小于该元素的个数
for j in range(len(A)-1, -1, -1):
B[C[A[j]]-1