- 博客(3)
- 收藏
- 关注
原创 算法导论 计数排序
不管所堆排序,还是快速排序,排序的本质都所基于各个元素之间的比较。而可以证明的是,所有基于比较的排序算法,在最坏情况下的时间复杂度的下界是O(nlgn)。 而,计数排序不所基于元素之间的比较,而是,对于一个输入x,在整个输入中确定出小于x的元素个数,这样就可以把元素x直接放在它在最终输出数组中的确定位子上。 基本思想:所有输入放入数组A中(元素下标从1开始)最终输出在数组B
2011-06-15 22:01:00 336
原创 算法导论 习题 6.5-8
题:请给出一个时间为O(nlgk)、用来将k个已排序链表合并为一个排序链表的算法。此处n为所有输入链表中元素的总数。(提示:用一个最小堆来做k路合并) k个已排序链表,假设每一个链表的第一个元素为root(i) (i = 1,2,3...k)。那么可以为这k个元素root(i)构造一个最小堆Heap_Min,其时间复杂度为O(lgk)。此时堆顶元素假设为root(x),根
2011-06-03 22:06:00 552
原创 算法导论 堆排序
堆的基本概念:堆是一个完全二叉树,用数组来存储这个结构的时候,A[1...length[A]]可以表示有效值,但heap_size[A]以外的值都不是属于堆的,可以视为无效值。 对于数组中下标为i的元素,根据二叉树的性质可以得到:其父节点下标为,P = n/2(下取整)左孩子: L = 2*i右孩子: R = 2*i + 1 最大堆:除了根节点外的每个节点i,
2011-06-03 15:50:00 504
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人