随笔分类 -  数据结构与算法

算法笔试题练习(二)
摘要:今天看到david的百度2014校招笔试题目题解(链接) 题目是这样的:1、给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。(15分) 里面给出了一种解决方案,如下: 阅读全文

posted @ 2013-10-08 13:32 无为在歧路 阅读(294) 评论(0) 推荐(0)

数据结构-链表
摘要:链表是一种比较基础的数据结构,通过顺序连接的方式存储数据。链表有单链表,双向链表,循环链表等。 对于单链表,其每个节点存储了节点元素值和下一个邻接节点的指针,通过交替指向下一个节点可以遍历整个链表 阅读全文

posted @ 2013-10-06 20:01 无为在歧路 阅读(206) 评论(0) 推荐(0)

数据结构-队列
摘要:队列是一种比较重要的数据结构,其特点是FIFO先进先出,操作系统中的任务调度就是利用了队列,不过那是一种通过构建最大堆实现的优先队列。这里我们只讨论比较常见的一种队列,循环队列。循环队列就像一个转盘一样,head和end分别指向队头和队尾,先加入的元素放到队尾,出队在对头 阅读全文

posted @ 2013-10-06 19:29 无为在歧路 阅读(238) 评论(0) 推荐(0)

数据结构-栈
摘要:栈,是计算机中比较重要的算法,其特点具有后进先出。事实上,向python和javascript这样的解释性语言或者说具有辅助编译性特点的语言。其类型中数组的操作就具有栈的特点。比如Array.push,Array.pop等方法。因为是数组,所以栈的结构是顺序性的,也就是默认申请一个数组,动态的对数组进行管理。对数组的动态管理是有成本的,频繁的删除、插入操作会导致栈的性能较差,因此大多数栈会使用链表来实现,因为对os来讲向堆中申请内存是比较充裕的。下面就来看看链表栈的实现 阅读全文

posted @ 2013-10-06 19:18 无为在歧路 阅读(225) 评论(0) 推荐(0)

线性排序算法-计数排序
摘要:一般的排序算法中如归并排序、堆排序和快速排序都是时间复杂度为O(nlgn)内的算法,其中归并排序和堆排序达到最坏情况下的上界,快速排序表现依赖于分区中平衡的划分,在均匀分布的情况下快速排序的运行时间上界为O(nlgn),如果数据时有序的话,复杂度可能达到 cita(n^2),都是比用比较的方式进行排序,比较排序可以抽象对一颗决策树(完全二叉树)。下面介绍一些一些线性排序的算法,其时间复杂度为 cita(N),常见的线性排序算法有计数排序、基数排序和桶排序等 阅读全文

posted @ 2013-09-29 11:52 无为在歧路 阅读(341) 评论(0) 推荐(0)

算法笔试题练习
摘要:最近又是跳槽和校招高峰期,网上也流传各大公司的算法笔试题,看了一些题,自己做做练习,以下都是python的实现 阅读全文

posted @ 2013-09-26 20:08 无为在歧路 阅读(261) 评论(0) 推荐(0)

堆排序
摘要:一般来说,堆排序虽然比快速排序算法性能稍差,但是堆确实一种比较重要的数据结构,比如os中的任务调度中的优先队列就是堆高效实现,堆按照类型可以划分为最小堆和最大堆。 阅读全文

posted @ 2013-09-26 20:02 无为在歧路 阅读(208) 评论(0) 推荐(0)

算法学习-归并排序
摘要:今天看算法导论,学习了归并排序原理,结合网上的示例自己理解后用python和c来实现 阅读全文

posted @ 2013-09-01 22:42 无为在歧路 阅读(246) 评论(0) 推荐(0)

树的遍历
摘要:树的遍历分为深度遍历和广度遍历,而深度遍历有前序遍历、中序遍历、后序遍历,广度遍历就是常说的层次遍历。 阅读全文

posted @ 2013-06-02 22:53 无为在歧路 阅读(4) 评论(0) 推荐(0)

散列表的学习
摘要:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 阅读全文

posted @ 2013-06-02 22:34 无为在歧路 阅读(7) 评论(0) 推荐(0)

导航