
算法基础
文章平均质量分 86
方寸之间
这个作者很懒,什么都没留下…
展开
-
排序算法汇总
1.冒泡排序2.选择排序3.插入排序4.交换排序5.归并排序6.快速排序7.希尔排序8.堆排序9.双向冒泡排序10.计数排序http://www.matrix67.com/blog/archives/166排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大,所以排序算法 对算法本身的速度要求很高。 而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。在后面我将 给出详细的说明。 对于排序的算法我想先做一点简单的介绍,也是给这篇文章理一个提纲。 我将按照算法的复杂原创 2011-05-17 16:15:00 · 2753 阅读 · 2 评论 -
Hash表的算法与应用
一、什么是Hash hashing定义了一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来在数据库中建立索引并进行搜索,同时还用在各种解密算法中。 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合原创 2012-03-17 17:00:53 · 1542 阅读 · 0 评论 -
链表的常见操作
一、链表创建链表主要有三种形式,包括单链表、双链表和循环链表。单链表每个节点只包含一个后驱指针,双链表节点同时包含一个前驱指针和一个后驱指针,循环链表的尾节点的后驱指向头节点。/*单链表节点结构*/ typedef struct NodeType { char elem; NodeType*next; }Node; /*双链表节点结构*/ typedef原创 2012-03-17 16:59:58 · 1065 阅读 · 0 评论 -
并查集
<br />并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。<br /> <br /> 主要操作<br />需要注意的是,一开始我们假设元素都是分别属于一个独立的集合里的。<br />转载 2011-05-20 23:18:00 · 950 阅读 · 0 评论 -
二叉树的遍历
遍历概念 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。遍历方案1.遍历方案 从二叉转载 2011-05-18 11:21:00 · 1304 阅读 · 0 评论 -
几种算法思想
1、递归法 所谓递归,就是指如果需要求解当前状态就需要求解其依赖的迁移状态。 一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 采用递归描述的算法通常有这样的特征: 1)为求解规模为N的问题,设法将它分解成规模较小的问题; 2)然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综原创 2011-06-20 13:46:00 · 8428 阅读 · 0 评论 -
素数生成算法
质数的定义一个数,如果只有1和它本身两个因数,这样的数叫做质数,又称素数。 试除判断法算法描述:从上述定义可知,素数不能被1和它本身之外的数整除,所以,判断一个数x是否素数只要看它是否能被2~sqrt(x)间的数整除即可;而求N内所有素数则是循环重复上述过程。优化:判断一个数x是否素数只要看它是否能被2~sqrt(x)间的素数整除即可。#include #include // 试除法求maxNum内的所有素数,返回个数unsigned int PrimeNum_1(unsigned int ma转载 2011-05-21 16:28:00 · 2979 阅读 · 0 评论 -
动态规划
最优化原理 1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。一些静态模型,只要人为地引进“时间”因素,分成时段,就可以转化成多阶段的动态模型,用动态规划方法去处理。与此同时,他提出了解决这类问题的“最优化原理”(Principle of optimality): “一个过程的最优决策具有这样的性质:即无论其初始状态和初始决策如何,其今后诸策略对以第一个决策所形成的状态作为初始状态的过程而言,必须构成最优策略”原创 2011-05-22 20:37:00 · 2154 阅读 · 1 评论 -
逻辑推理的一般解法思想
<br /><br />进行逻辑推理时,需要遵循以下三大基本规律:<br />一、矛盾律。在逻辑推理过程中,对同一结论的推理不能自相矛盾。即对同一对象的两个互相矛盾的判断,至少有一个是错误的。<br />二、排中律。在逻辑推理过程中,一个思想或为真或为假,不能既为真又为假,也不能既不真又不假。即对同一对象的两个恰好相反的判断,必有一个是对的,一个是错误的。<br />三、同一律。在逻辑推理过程中,同一对象的内涵必须是确定的,在进行判断和推理的过程中,每一概念都必须在同一意义下使用,不许偷换。即每个概念的含义转载 2011-05-19 11:23:00 · 2455 阅读 · 0 评论 -
数据结构与算法面试题汇编(1)- 链表的操作与应用
1、给定单链表的头指针和一个结点指针,在O(1)时间删除该结点。算法描述:删除单链表的一个节点需要知道该节点的前驱和后继。实际上找到前驱的平局时间复杂化度就是O(1).传送阵:http://blog.youkuaiyun.com/wcyoot/article/details/64266912、输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。算法描述:定义两个节原创 2012-04-10 17:47:55 · 3458 阅读 · 0 评论