
【数据结构与算法】
文章平均质量分 76
dcj0913
这个作者很懒,什么都没留下…
展开
-
【多线程】秒杀多线程面试题目
多线程目前有15篇,本系列先示范如何使用多线程,再详细分析多线程的重点难点必考点——多线程同步互斥问题。各文章讲解生动细致,针对性强。必定也能助你在面试中秒杀所有多线程面试题。1.《秒杀多线程第一篇 多线程笔试面试题汇总》2.《秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》3.《秒杀多线程第三篇转载 2014-09-19 09:39:28 · 652 阅读 · 0 评论 -
KMP算法
在介绍KMP算法之前,先介绍一下BF算法。一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。 举例说明: S: ababcababa P: ababa原创 2014-09-05 20:57:53 · 305 阅读 · 0 评论 -
解决哈希(HASH)冲突的主要方法
虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。1、开放定址法 用开放定址法解决冲突的做法是:当冲突发生时,原创 2014-10-24 09:43:12 · 491 阅读 · 0 评论 -
C++编程练习(17)----“二叉树非递归遍历的实现“
二叉树的非递归遍历最近看书上说道要掌握二叉树遍历的6种编写方式,之前只用递归方式编写过,这次就用非递归方式编写试一试。C++编程练习(8)----“二叉树的建立以及二叉树的三种遍历方式“(前序遍历、中序遍历、后续遍历)递归的思想也就是栈的思想,既然不用递归,那就改用栈的方式。“递归=栈”1、前序遍历前序转载 2014-09-05 09:00:36 · 569 阅读 · 0 评论 -
二分查找
二分查找02 March 2011以前学的时候也没好好研究,只是大概知道思想,昨天写程序的时候发现bug了,十分惭愧,结果在网上发现了这样资料:二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反原创 2014-10-24 12:38:28 · 559 阅读 · 0 评论 -
【约瑟夫】编程实现约瑟夫环
已知 n 个人(以编号1, 2, 3 ,4, 5 ,6 ... .. .n)围坐一张圆桌周围。从编号为k 的人开始报数,数到m 的那个人出列;他的下一个人又从 1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列。请用C++编程。整个程序分为3个步骤:第一步:建立一个有n个元素的循环链表,链表是从1的编号开始的。第二步:是从链表的表头数到第 k 个原创 2014-10-02 20:35:59 · 1119 阅读 · 0 评论 -
最短路径算法
在准备ACM比赛的过程中,研究了图论中一些算法。首先研究的便是最短路的问题。《离散数学》第四版(清华大学出版社)一书中讲解的Dijkstra算法是我首先研究的源材料。 如何求图中V0到V5的最短路径呢? java实现的方式如下: 第一步,根据图来建立权值矩阵: int[][] W = { { 0,原创 2014-10-20 20:46:43 · 1246 阅读 · 0 评论 -
面试中常考的现场写小程序题目
在面试中面试官常常让我们写几个小的程序,以此来考察我们的编程内功。所以在准备面试的过程中在纸上练习着写一些程序是很有必要的。下面是在面试中常考的几个题,出现频率非常之高!!!!1、完整正确的写出二分查找的算法int binary_search(int arr[],int n,int key){ assert(arr!=NULL && n>0);原创 2014-10-21 15:39:04 · 1143 阅读 · 0 评论 -
【树】 B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关原创 2014-09-16 15:08:35 · 452 阅读 · 0 评论 -
链表的反转
如何把一个单链表进行反转?方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。方法2:使用三个指针遍历单链表,逐个链接点进行反转。方法3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。 方法1:浪费空间。 方法2:使用p和q连个指针配合工作,使得两个节点间的原创 2014-09-24 19:45:34 · 399 阅读 · 0 评论 -
【排序算法】 白话经典排序算法
转载于:http://blog.youkuaiyun.com/morewindows/article/details/17488865一. 白话经典算法目前有17篇,分为七大排序和经典面试题讲解两大类1. 《白话经典算法系列之一 冒泡排序的三种实现》2. 《白话经典算法系列之二 直接插入排序的三种实现》3.转载 2014-09-17 09:08:53 · 465 阅读 · 0 评论 -
【递归算法】人脑理解递归
递归真是个奇妙的思维方式。自打我大二学习递归以来,对一些简单的递归问题,我总是惊叹于递归描述问题和编写代码的简洁。但是总感觉没能融会贯通地理解递归,有时尝试用大脑去深入“递归”,层次较深时便常产生进不去,出不来的感觉。这种状态也导致我很难灵活地运用递归解决问题。有一天,我看到一句英文:“To Iterate is Human, to Recurse, Divine.”中文译为:“人理解迭代,神理解转载 2014-10-21 21:22:32 · 553 阅读 · 0 评论 -
程序员技术练级攻略
月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历转载 2014-09-14 20:47:04 · 442 阅读 · 0 评论 -
五大常用经典算法
五大常用算法之一:分治算法原创 2014-09-14 18:32:24 · 33433 阅读 · 2 评论 -
计算机经典书籍电子书合集(适合计算机学生学习以及程序员笔试、面试)
2楼 JAVA篇此篇收录:.《Java 2 核心技术》、2.《Java编程语言》、3.《Effective Java》、4.《Java解惑》、5.《Java编程思想》3楼 C篇此篇收录:1.《C程序设计语言》、2.《C和指针》、3.《C陷阱与缺陷》、4.《C专家编程》、5.《你必须知道的495个C语言问题》4楼 C++篇此篇收录:1转载 2014-09-14 19:34:17 · 1525 阅读 · 0 评论 -
程序员必须知道的10大基础实用算法及其讲解
程序员必须知道的10大基础实用算法及其讲解 算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出转载 2014-09-15 19:53:51 · 470 阅读 · 0 评论 -
【树】 红黑树(通俗易懂)
教你透彻了解红黑树二叉查找树由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根原创 2014-09-16 16:16:29 · 1703 阅读 · 0 评论 -
【字符串】 KMP算法小结(通俗易理解)
1. 暴力匹配算法 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符;如果失配(即S[i]! = P[j]),令i = i - (j原创 2014-09-15 20:00:26 · 522 阅读 · 0 评论 -
《The-Art-Of-Programming-By-July》
最近发现了一步好书,呵呵,我前期原创 2014-09-16 16:39:24 · 910 阅读 · 0 评论 -
【矩阵相交】矩形相交以及求出相交的区域的原理解析
问题:给定两个矩形A和B,矩形A的左上角坐标为(Xa1,Ya1),右下角坐标为(Xa2,Ya2),矩形B的左上角坐标为(Xb1,Yb1),右下角 坐标为(Xb2,Yb2)。(1)设计一个算法,确定两个矩形是否相交(即有重叠区域) (2)如果两个矩形相交,设计一个算法,求出相交的区域矩形 (1) 对于这个问题,一般的思路就是判断一个矩形的四个顶点是否在原创 2014-10-01 15:28:43 · 3763 阅读 · 0 评论