堆数据结构实际上是一种数组对象,是以数组的形式存储的,但是它可以被视为一颗完全二叉树,因此又叫二叉堆。堆分为以下两种类型:
大顶堆:父结点的值不小于其子结点的值,堆顶元素最大
小顶堆:父结点的值不大于其子结点的值,堆顶元素最小
堆排序的时间复杂度跟合并排序一样,都是O(nlgn),但是合并排序不是原地排序(原地排序:在排序过程中,只有常数个元素是保存在数组以外的空间),合并排序的多有元素都被...
分类:
其他好文 时间:
2014-08-05 22:34:10
阅读次数:
232
这周写了红黑树,不得不说红黑树是复杂难写的数据结构。尽管我闭上眼睛,能够还原出如何插入,时间充足的情况下,不给我任何资料我能写出插入部分,但是删除还是做不来。删除部分的心得并不多。因为左旋右旋,左左右右,一会就搞晕了。所以插入部分用了一个晚上就写完了,但是删除部分用了2个晚上,又是看算法导论,又是看...
分类:
其他好文 时间:
2014-08-05 19:12:20
阅读次数:
317
本章主要是算法知识的基础讲解,介绍了循环不变式,几个简单的排序算法,递归分治算法等内容。
1、循环不变式
循环不变式主要用来说明算法的正确性,那么什么是循环不变式呢,其实就是在循环过程中,一些元素数据必须保持的一些性质,例如在插入排序中,数组为A,必须保证三个性质:
(1) 初始化:在循环开始之前,循环不变式是成立的,即:A[0]是有序的,A[1...n-1]是无序的。
(2) 保持:在循...
分类:
其他好文 时间:
2014-08-05 15:53:01
阅读次数:
220
新的一年到了,很多园友都辞职要去追求更好的工作环境,我也是其中一个,呵呵! 最近闲暇的时候我开始重温一些常用的算法。老早就买了《算法导论》,一直都没啃下去。 这本书确实很好,只是太难读了,总是读了几章就又读不下去了!工作上也几乎用不到。 我这段时间发现看这些排序算法比以前容易了很多,就借此机会将它....
分类:
其他好文 时间:
2014-08-04 17:12:37
阅读次数:
363
一、声明 算法思路部分借鉴于《算法导论》(第三版),实现过程均属作者原创,转载或引用请注明出处。二、算法概述 插入排序算法适用于少量元素的排序。插入排序的过程就好比排序一副扑克牌。开始时,左手为空并且桌子上的牌面朝下。然后,每次从桌子上拿走一张扑克牌并将它插入左手中正确的位置。为了找到牌的正确位置....
分类:
编程语言 时间:
2014-08-04 13:45:47
阅读次数:
235
1.把c++primer读完。2.好好读一下编程之美这本书。3.开始读算法导论。4.仔细刷一下AC自动机的题,学一下二叉平衡树等数据结构。5.强化一下DP,搜索等题型。6.学一下python,也熟练一下java。7.多动脑,多思考。等到八月底再来补充这篇文章,看完成情况如何。
分类:
其他好文 时间:
2014-08-03 20:21:35
阅读次数:
201
散列表直接寻址表 一个数组T[0..m-1]中的每个位置分别对应全域U中的一个关键字,槽k指向集合中一个关键字为k的元素,如果该集合中没有关键字为k的元素,则T[k] = NIL全域U={0,1,…,9}中的每个关键字都对应于表中的一个下标值,由实际关键字构成的集合K={2,3,5,8}决定表中的一...
分类:
其他好文 时间:
2014-07-29 17:05:32
阅读次数:
639
1.课程分两部分:算法分析,算法设计2.算法分析:首先考虑的是性能,how fast;其次会考虑通信,ram,disk占用等等3.what is more important than perf ? 功能性,模块化,安全,用户友好,可扩展... then why study algs? 1,perf...
分类:
其他好文 时间:
2014-07-29 16:47:12
阅读次数:
266