数据结构&算法
dragondwy
永远的I/T Specialist
展开
-
数据结构与算法综合资料库(章1)-----何谓数据结构
何谓数据结构数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通转载 2006-05-17 17:12:00 · 1445 阅读 · 0 评论 -
如何产生素数
Solovag-Strasson Robert Solovag和Volker Strasson开发了一种概率的基本测试算法。这个算法使用了雅可比函数来测试p是否为素数: (1) 选择一个小于p的随机数a。 (2) 如果G_C_D(a,p) (3) 计算j=a^(p-1)/2 mo转载 2006-05-24 14:39:00 · 1305 阅读 · 0 评论 -
皇后问题的一个解法
#include #include #include long sum=0,upperlim=1; void test(long row, long ld, long rd){ if (row != upperlim){ long pos = upperlim & ~(row | ld | rd); while (pos){ long p = pos& -pos;转载 2006-05-20 21:56:00 · 1113 阅读 · 0 评论 -
如何用栈实现递归与非递归的转换
递归与非递归转换的基础知识是能够正确理解三种树的遍历方法:前序,中序和后序,第一篇就是关于这三种遍历方法的递归和非递归算法。一、为什么要学习递归与非递归的转换的实现方法? 1)并不是每一门语言都支持递归的。 2)有助于理解递归的本质。 3)有助于理解栈,树等数据结构。二、三种遍历树的递归和非递归算法 递归与非递归的转换基于以下的原理:所有的递归程序都可以用树结构表示出来。需转载 2006-06-30 11:48:00 · 7477 阅读 · 5 评论 -
Git 数据模型分析-2
上一篇结束时,所有4种类型的Object 都出现了。 Tree, Blob, Commit, Tag. 分别对应为 Tree - 目录;Blob - 文件;Commit;一次保存提交;Tag - 对某个commit的永久标签。 到这里,一切顺利,一切都很好理解,一切都很亲切。 Git 的数据模型,是一中有向无环图(directed acyclic graph)。原创 2008-12-26 21:32:00 · 1152 阅读 · 0 评论 -
扑克牌类比插入排序和合并排序
《算法导论》给出了插入排序和合并排序的非常直观的类比----- 排列扑克牌。 插入排序很简单,从数组的第j(j = 2 to n)个元素开始,和前面的j-1个元素依次比较,并放到合适的位置,保证前面各个元素排好序。类比: 一副牌,面朝下,你一张一张抓,没抓一张,就放到手中合适的位置,保持手中牌是有序的。 合并排序,采用递归方法,其中重要的一步是合并2个已经排好序的数组。类原创 2008-12-06 23:56:00 · 750 阅读 · 0 评论 -
Git 数据模型分析-1
//注:所有图片来源于《Git Internals》PDF文档。 昨日些许郁闷,都是《Git Internals》这本书弄得。 Git 简介 Git 是一个SCM版本管理工具,始作者是Linus Torvalds,也就是linux之父。 Git 最初用一些脚本语言实现(Shell, Perl)等,后来用C语言改写,性能显著提高。 Git 有些独特原创 2008-12-26 21:28:00 · 1331 阅读 · 0 评论 -
大白话解析模拟退火算法
1. 模拟退火算法 2. 遗传算法一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。如图1所示:假设C点为当前解转载 2013-05-23 16:55:46 · 928 阅读 · 0 评论