
数据结构与算法
xiaojun11-
勤能补拙,奋发ing
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
各种算法 排序 查找 等等
代码行统计 ( Mon, 20 Apr 2009 13:24:09 +0800 )Description: #find . -name *.c |xargs wc -l 802 ./lcec/src/Slcec_conf.c 2380 ./lcec/src/Slcec_view.c 1435 ./lcec/src/Slcec_ctl.c......转载 2016-07-11 14:44:19 · 1701 阅读 · 0 评论 -
一步一步写二叉查找树
一步一步写二叉查找树 摘自: http://www.cppblog.com/cxiaojia/archive/2012/08/09/186752.html作者:C小加 更新时间:2012-8-9二叉查找树(BST)是二叉树的一个重要的应用,它在二叉树的基础上加上了这样的一个性质:对于树中的每一个节点来说,如果有左儿子的话,它的左儿子的值一定小于它本身的值,如果有右转载 2016-07-13 14:21:05 · 307 阅读 · 0 评论 -
红黑树的C++完整实现源码
红黑树的C++完整实现源码作者:July、saturnman。时间:二零一一年三月二十九日。出处:http://blog.youkuaiyun.com/v_JULY_v。声明:版权所有,侵权必究。-------------------------------------------前言: 本人的原创作品红黑树系列文章,至此,已经写到第5篇了。虽然第三篇文章:红转载 2016-07-13 15:28:32 · 1651 阅读 · 0 评论 -
红黑树从头至尾插入和删除结点的全程演示图
红黑树插入和删除结点的全程演示作者:July、saturnman。时间:二零一一年三月二十八日。出处:http://blog.youkuaiyun.com/v_JULY_v。声明:版权所有,侵权必究。-----------------------------------引言: 目前国内图书市场上,抑或网上讲解红黑树的资料层次不齐,混乱不清,没有一个完整而统一的转载 2016-07-13 15:29:32 · 4732 阅读 · 3 评论 -
经典算法研究系列:五、红黑树算法的实现与剖析
红黑树算法的层层剖析与逐步实现 ----作者 July 二零一零年十二月三十一日本文主要参考:算法导论第二版本文主要代码:参考算法导论。本文图片来源:个人手工画成、算法导论原书。推荐阅读:Leo J. Guibas 和 Robert Sedgewick 于1978年写的关于红黑树的一篇论文。---------------------------------转载 2016-07-13 15:40:23 · 396 阅读 · 0 评论 -
折半排序法(二分插入排序法)
/*------------------------------------------------------------------------------------------------ 折半排序法(二分插入排序法)排序原理:其实也属于插入法类型,分已排序和未排序部分.然后将未排序转载 2016-07-14 09:45:24 · 1738 阅读 · 0 评论 -
希尔排序法
/*---------------------------------------------------------------------------------------- 希尔排序法算法原理:也称缩小增量法,是将整个无序列分成若干个子序列,再分别 进行插入排序的转载 2016-07-14 13:31:05 · 444 阅读 · 0 评论 -
堆的数组实现
摘抄:http://www.cnblogs.com/kkgreen/archive/2011/05/17/2048299.html用数组来实现堆比链式实现简单,这是因为:1)在插入操作中,链式实现需要一个getInsertNode方法去找插入在哪个结点之下,而在数组中,插入结点的位置下标是依次递增的,(完全二叉树)插入操作的向上调整也可以直接根据下标来找父节点(思维和链式一样)转载 2016-07-25 14:06:42 · 911 阅读 · 0 评论 -
C++ 堆结构(数组实现)
要说最大堆和最小堆,就得先知道最大树和最小树。每个结点的值都大于(小于)或等于其子节点(如果有的话)值的树,就叫最大(最小)树。最大堆(最小堆)是最大(最小)完全树。由于堆是完全二叉树,所以可以用公式化描述,用一维数组来有效的描述堆结构。利用二叉树的性质:如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到第[log2n]向下取整+1层,每层从左到右转载 2016-07-25 14:10:49 · 2332 阅读 · 0 评论 -
冒泡排序法
/*------------------------------------------------------------------------------------------- 冒泡排序法排序原理:将最大(最小)元素通过逐个比较和移动,移到最后一位.然后又转载 2016-07-14 14:06:54 · 327 阅读 · 0 评论 -
选择排序法
/*------------------------------------------------------------------------------------------ 选择排序法排序原理:从第一位开始,和后面逐个进行比较,第一次将第一个元素赋值转载 2016-07-14 15:20:34 · 371 阅读 · 0 评论 -
快速排序算法
快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序是一种不稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采转载 2016-07-14 17:43:33 · 338 阅读 · 0 评论 -
leetcode算法刷题
算法刷题:https://leetcode.com/problemset/algorithms/转载 2017-10-12 14:28:23 · 443 阅读 · 0 评论 -
二叉查找树--插入、删除、查找
二叉查找树是满足以下条件的二叉树:1.左子树上的所有节点值均小于根节点值,2右子树上的所有节点值均不小于根节点值,3,左右子树也满足上述两个条件。 二叉查找树的插入过程如下:1.若当前的二叉查找树为空,则插入的元素为根节点,2.若插入的元素值小于根节点值,则将元素插入到左子树中,3.若插入的元素值不小于根节点值,则将元素插入到右子树中。 二叉查找树的删除,分三种情况进行处理:转载 2016-07-13 14:17:27 · 349 阅读 · 0 评论 -
教你初步了解红黑树
教你初步了解红黑树 作者:July、saturnman 2010年12月29日本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, Fe转载 2016-07-13 12:02:08 · 374 阅读 · 0 评论 -
排序之bitmap排序
所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 如果说了这么多还没明白什么是Bit-map,那么我们来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这里假设这些元素没有重复)。那么我们就可以采用Bit-map的方法来达到排序的目的。要表示8个转载 2016-07-11 17:43:29 · 446 阅读 · 0 评论 -
各种排序算法的实现及其比较(c++实现)
转载自: http://lib.youkuaiyun.com/article/datastructure/9028 优快云数据结构与算法排序算法是笔试和面试中最喜欢考到的内容,今晚花了好几个小时的时间把之前接触过的排序算法都重新实现了一遍。 主要是作为复习用。当然也希望能够给大家帮上点忙。对各种排序算法比较熟悉的朋友可以直接跳过。 常用的内部排序算法主要分为五转载 2016-07-11 18:00:05 · 1337 阅读 · 0 评论 -
各种排序算法的讲解与代码实现
排序的分类:1 内部排序 内部排序:在整个排序过程中不需不访问外存便能完成,称这样的排序问题为内部排序;1.1 插入排序 插入排序: 将无序序列中的一个或几个记录“插入”到有序的序列中,从而增加记录的有序序列的长度。 主要思想是将第一个元素看做是有序的,从第二个元素起将待排序的元素插入到有序序列中,使序列逐渐扩大,直到所有的元素都插入到有序转载 2016-07-11 18:28:59 · 649 阅读 · 0 评论 -
13种排序算法详解(相当清楚,还附有flash动画)
0、前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综合发散而来。比如说作为最基本的排序算法就种类很多,转载 2016-07-11 18:38:27 · 2228 阅读 · 0 评论 -
海量数据处理专题(五)——堆
【什么是堆】概念:堆是一种特殊的二叉树,具备以下两种性质1)每个节点的值都大于(或者都小于,称为最小堆)其子节点的值2)树是完全平衡的,并且最后一层的树叶都在最左边这样就定义了一个最大堆。如下图用一个数组来表示堆:那么下面介绍二叉堆:二叉堆是一种完全二叉树,其任意子树的左右节点(如果有的话)的键值一定比根节点大,上图其实就是一个二叉堆。你一定发觉了,转载 2016-07-22 15:43:19 · 377 阅读 · 0 评论 -
函数时间复杂度的计算详解(转自优快云)
转自:http://blog.youkuaiyun.com/flyfish1986/article/details/46994347 http://www.cnblogs.com/SCAU_que/articles/1735784.html函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n > N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐近快转载 2016-07-22 17:16:51 · 7583 阅读 · 0 评论 -
如何判断链表中存在环路
如果你曾经想过要参加面试,像我一样,你一定看过这个问题:如何判断链表中存在环路。(我不太清楚这个问题的应用在哪里,烦请各位读者能够提示一下。)先简单说一下我之前看到的方法。方法一:蛮力法。方法二:在链表中增加一个域visited,初始化都为0,从链表的头部开始走,每走过一个链表就标记visited为1,如果要访问的下一个节点的visited域为1,那么证明链表中有环。转载 2016-07-12 10:30:06 · 2482 阅读 · 1 评论 -
转.如何判断单链表中是否有环路,如何求环路入口位置
如何判断单链表中是否存在环(转载)(2011-03-27 21:07:08)转载标签:杂谈分类: 计算机学习有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。现在需要解决的问题有以下两个:如何判断一个链表是不是这类链表?如果链表为存在环,如何找到环的入口点?转载 2016-07-12 10:32:15 · 455 阅读 · 0 评论 -
单链表实现(超简单)
其中包含带头结点的链表:头插法和尾插法不带头结点的链表:头插法和尾插法#include using namespace std; struct Node{int num;Node* next;};struct NodeList{Node* head;};int _tmain(int argc, _TCHAR* a原创 2016-07-12 15:40:18 · 413 阅读 · 0 评论 -
单链表反转/逆序的两种方法
摘自:http://www.nowamagic.net/librarys/veda/detail/2241延伸阅读此文章所在专题列表如下:第01话:线性表的概念与定义第02话:线性表的抽象数据类型ADT定义第03话:线性表的顺序存储结构第04话:线性表的初始化第05话:线性表的遍历、插入操作第06话:判断线性表是否为空与置空操作第07话:线性表的转载 2016-07-12 15:54:41 · 1562 阅读 · 0 评论 -
算法牛人 论坛
算法《数据结构与算法分析》刷LeetCode hihoJuly博客PDF(三十七章) 博客园 http://www.cnblogs.com/v-July-v/程序员面试题精选100题原创 2016-06-30 21:59:46 · 1093 阅读 · 0 评论 -
从头到尾解析Hash表算法
十一、从头到尾解析Hash 表算法作者:July、wuliming、pkuoliver 出处:http://blog.youkuaiyun.com/v_JULY_v。 说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。--------------------------转载 2016-07-13 11:29:35 · 356 阅读 · 0 评论 -
常用数据结构算法:二叉树的遍历(递归和非递归)
https://www.cnblogs.com/WellHold/p/6594779.html 二叉树是常用的一种数据结构,今天记录一下学习到的二叉树的遍历方法,其中包括递归方式和非递归方式的遍历,这是在遍历方法上的分类。在遍历顺序上分类,二叉树的遍历可以分为前序、中序、后序遍历。所谓的前中后是指何时访问中间节点,即前序遍历,则遍历节点的顺序为:中-》左-》右;而中序遍历,则遍历节点的顺序为:左-...转载 2018-03-22 17:48:04 · 279 阅读 · 0 评论