算法导论 第二部分

排序与顺序统计量   排序,就是把无序的对象,按照某些关键字,排列,使存储的顺序和关键字的大小之间存在一定关系。第i个顺序统计量就是,存储顺序中的第i个。

排序 (具体算法网站,http://www.cs.usfca.edu/~galles/visualization/Algorithms.html  我也是在网上看到的哦,不记得是谁发的了,如果作者看到,可以联系我)

第六章,堆排序,原址排序

  • 堆,一棵完全二叉树(满二叉树的右下角的最后一行缺了一些)。与二叉树的生成不同,堆从下往上生成,容易保证它是完全二叉树的性质。插入结点也是从下往上调整。
  • 但是,堆排序的时候,是总是把根结点和最后一个叶子结点对换,再从上往下调整的。

第七章,快速排序(不稳定)

  • 最常用的算法,原址排序,与其他O(nlogn)算法比有最小的常数因子。依赖于主元的选择,可以用随机化减少最坏情况发生的概率。

第八章,线性时间排序。 时间减少的原因 1. 对处理的对象有限定 2. 空间换时间

  • 由决策树推出,比较算法的下界 nlogn,也就是说,如果一个排序算法是基于比较的,那么,不可能比nlogn更少的时间了,最多就在常数因子上有进步
  • 计数排序   排序对象限定:某一个范围内的可数个对象,比如,整数[1~k]。 空间消耗:非原址排序,以整数[1~k]为例,空间为 k+n。 算法时间中的k就是范围,n是需要排序的数的个数
  • 基数排序  排序对象限定:1. 可以一位一位的排 2.一般基数排序是用计数排序作为基础排序的,所以,某一范围内的可数个对象。以多位数的整数为例,基数排序的思想就是,个位十位...这样的排。因此,它所用的基础排序直接影响到了它的性能。 算法时间中的d是位数。
  • 桶排序     排序对象限定:均匀分布  空间消耗:非原址排序。 将数据映射到n个桶中,如果服从均匀分布的条件,桶的大小会趋于1。因此平均情况时间复杂度是O(n)

第九章,中位数和顺序统计量

  • 特殊的顺序统计量,最大值和最小值。 单个确定,必须有n-1次比较才能确定。
  • 基于快速排序的顺序统计量确定。期望时间O(n)。快速排序之所以适合做这件事,1. 每次都能确定一个顺序统计量 2.方便剪枝。 个人觉得归并排序应该是干不了这活的
  • 分治算法,将数据5个5个分组,找中位数,找中位数,剪枝,递归。最坏时间复杂度O(n)。虽然没有验证过,但这个5,应该是有点讲究的。这是比快速排序剪枝策略更好的算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值