
数据结构
CankingApp
微博:http://weibo.com/canking666
Blog: http://www.canking.win
展开
-
Algorithm : 费式数列
如有一个兔子每个月生一个小兔子,小兔子一个月后才开始生产。这样,第一个月一只,第二个月两只,第三个月三只······ 数列具体为:0 1 2 3 5 8 13 21······ 我认为算法理解不是难点,用程序实现也不是难点,而每个月的兔子具体生产个数的理解,才是重点,可能是我还没有领略此算法精华,总觉得思考时原创 2012-03-25 12:01:04 · 1205 阅读 · 0 评论 -
Algorlthm gosslp:八皇后问题浅谈
八皇后 8*8的棋盘上放八个皇后棋子,要求在纵行,竖行和斜行的八个方向上都不能有两个以上的皇后。1970和1971年,E.W.Dijkstra与N.Wirth曾用这个问题讲解程序设计技巧,淡然,像我这码农级程序员很难理解怎样应用到程序设计技巧中,现阶段只管理解问题的解决方法。 八皇后问题主要使用递归求解,然而如何减少递归次数呢? 在每次递归时,不必原创 2012-07-25 20:09:07 · 1809 阅读 · 0 评论 -
编译原理简单介绍
编译原理学习导论大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原原创 2012-11-01 20:39:57 · 4100 阅读 · 0 评论 -
汉诺塔算法
我的数据结构学习从汉诺塔开始,这个简单的算法我可是整整想了一晚上,现在终于有点明白了,上机单步了几遍,有所了解,,还是写点什么以供以后参考,也希望能对正在学算法的盆友有所裨益······ 总得来说汉诺塔就是层叠递归调用的典型例子,一直是利用A—>B A-->C B-->C这样的单个步骤。 具体来说,当盘数大于一时,不违背原则下(过程中总是大在下小的在上),A先借原创 2012-03-24 11:05:04 · 8329 阅读 · 3 评论 -
Algorithm Gossip:背包问题(Knapsack Problem)
背包问题(Knapsacks Problem) 总的来说,背包问题是一种动态优化问题。 背包载重量一定,给定一组物品,没件物品有自己的价值和重量,问题要求在不超过背包载重前题下,怎样让载入的物品价值和最大? 假如有物品如下: 物品号 物品名 重量 价钱原创 2012-07-25 20:42:24 · 2513 阅读 · 0 评论 -
排序法:改良的选择排序
Heap排序法 选择排序法基本概念为,每次从未排序的部分选出最小值,插入已排序的后端,其时间主要花费在整个未排序的部分寻找最小值,要让加快寻找,Heap排序是不错的选择。 Heap排序法让搜寻的路径由树根至最后一个树叶,而不是整个未排序的部分,因而称之为改良的选择排序。 Heap Sort只需一个记录的大小辅助空间,每个待排序的记录仅占一原创 2012-04-13 18:47:21 · 1171 阅读 · 0 评论 -
选首领: 链表应用
单向链表 循环链表 选首领。N个人为成一圈,从第一个人开始顺序报号1,2,3,。凡报道3着退出圈子,最后留在圈子里的人即为首领。 此问题可建一个循环链表,凡是到三的倍数时,将此节点删除然后,将计数改为0,然后再次往后执行,知道总数==1时停止,并输出该人标记(名字或编号)。 程序如下:#include#include#define N原创 2012-04-12 20:32:33 · 1050 阅读 · 1 评论 -
Algorithm: Shell 排序法 (改良的插入排序)
Shell 排序法 插入排序法为从后半部分未排序的取出一个,插入已排序的前半部分的适当位置。但速度不够快。 排序要加快速度,就要让后一次排序进行时,尽量用前一次排序结果,以加快速度······ Shell排序既是基于此方法的改良插入排序法。 Shell‘s Sort 又称 “缩小增量排序”(Diminishing Incremen原创 2012-04-07 11:29:06 · 1574 阅读 · 0 评论 -
Algorlthm:简单排序
选择排序 插入排序 气泡排序 许久在考虑数据结构算法用什么语言最好实现,哈哈,忽然发现自己是在想一个可傻的问题。数据结构本身就是一种解决问题方法的科学,是一种思维,用什么工具都可以实现,对各种语言的内在思想不强调。···· 复习了下简单的排序方法,算法思想。 选择排序的对象分作两部分,一个是已经排好的,一个是为排好的,每一次排序从后面的为排好的选原创 2012-04-02 16:20:03 · 1042 阅读 · 0 评论 -
巴斯卡三角形
巴斯卡三角形也就是我们学校学习的“杨辉三角”,其特点看下图即可明了。 此算法我觉得主要收获就是思考问题的能力和步骤。原先看题,头也挺闷的。首先,大体思考一下实现模型,思考自己设计计算的行数,顾名思义,需要个循环输出各行,然后,观察每行数个数,不用说也得个循环输出吧。这样,明显输出是靠至少两层循环实现的。这样,再来具体考虑每个输出的方法,当然写在一个函数里会。当然排版也很重要,可把每一原创 2012-03-26 23:59:32 · 2310 阅读 · 1 评论 -
算法复杂度分析
关键概念 要分析算法的复杂度,通常需要分析循环的运行.一,假如,某个循环体的复杂度是O(1),那么这个循环的时间复杂度就是O(n). for(int i = 0; i //一些列复杂度为O(1)的步骤.... }通常,如果某个循环结构以线性方式运行n次,并且循环体的时间复杂度都是O(1),那么该循环的复杂度就是O(n).即使,该循环跳过某些常数转载 2013-11-25 14:38:04 · 4392 阅读 · 2 评论