浅谈算法和数据结构: 七 二叉查找树

本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的时候具有较高的灵活性,而有序数组在查找时具有较高的效率,本文介绍的二...

2016-04-14 16:11:49

阅读数 291

评论数 0

浅谈算法和数据结构: 六 符号表及其基本实现

转载自:http://www.cnblogs.com/yangecnu/p/Introduce-Symbol-Table-and-Elementary-Implementations.html 前面几篇文章介绍了基本的排序算法,排序通常是查找的前奏操作。从本文开始介绍基本的查找算...

2016-04-11 13:54:30

阅读数 405

评论数 0

浅谈算法和数据结构: 十一 哈希表

转载自:http://www.cnblogs.com/yangecnu/p/Introduce-Hashtable.html 在前面的系列文章中,依次介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,下图是他们在平均以及最差情况下的时间复杂度: ...

2016-04-01 15:05:46

阅读数 302

评论数 0

深度优先搜索与广度优先搜索 .

深度优先搜索(Depth First Search,DFS) 主要思想:不撞南墙不回头 深度优先遍历的主要思想就是:首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有的顶点都被访问。 沿着某条路径...

2015-04-22 10:57:44

阅读数 457

评论数 0

归并排序

 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,...

2015-03-25 16:56:12

阅读数 342

评论数 0

快速排序

 高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6  1  2 7  9  3  4  5 10  8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用...

2015-03-13 18:02:30

阅读数 314

评论数 0

算法复杂度比较

  1  大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。  logN   如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每...

2015-03-13 17:51:09

阅读数 329

评论数 0

一步一步写算法(之非递归排序)

在上面一篇博客当中,我们发现普通查找和排序查找的性能差别很大。作为一个100万的数据,如果使用普通的查找方法,那么每一个数据查找平均下来就要几十万次,那么二分法的查找呢,20多次就可以搞定。这中间的差别是非常明显的。既然排序有这么好的效果,那么这篇博客中,我们就对排序算做一个总结。     按照我...

2015-03-11 17:19:43

阅读数 342

评论数 0

希尔排序

插入排序的算法复杂度为O(n2),但如果序列为正序可提高到O(n),而且直接插入排序算法比较简单,希尔排序利用这两点得到了一种改进后的插入排序。 一. 算法描述 希尔排序:将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小...

2015-03-11 17:10:50

阅读数 345

评论数 0

插入排序

在冒泡排序、选择排序编写代码之后,楼主渐渐找到了coding的信心,熟能生巧,就像写词唱曲之前,都得先背诵大量的诗词,熟悉各路歌曲,才能走出自己的路线,有自己的杰作。好吧,来让楼主继续进行"社会主义初级阶段"的任务,这次是插入排序。 一. 算法描述     插入排序:插入即表示...

2015-03-11 15:27:48

阅读数 340

评论数 0

详解STL中的map和hash_map区别

 在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下:     1、STL的map底层是用红黑树实现的,查找时间复杂度是log(n);     2、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1);...

2015-03-11 12:01:41

阅读数 6135

评论数 0

一步一步写算法(之查找)

 无论是数据库,还是普通的ERP系统,查找功能数据处理的一个基本功能。数据查找并不复杂,但是如何实现数据又快又好地查找呢?前人在实践中积累的一些方法,值得我们好好学些一下。我们假定查找的数据唯一存在,数组中没有重复的数据存在。     (1) 普通的数据查找     设想有一个1M的数据...

2015-03-11 11:54:20

阅读数 348

评论数 0

Hash表

 Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键...

2015-03-11 11:48:55

阅读数 345

评论数 0

排序二叉树

说到二叉树,这可是数据结构里面的非常重要的一种数据结构,二叉树是树的一种,本身具有递归性质,所以基于二叉树的一些算法很容易用递归算法去实现。作为一种非线性结构,比起线性结构还是相对复杂的,很多人甚至看不懂算法的意思,不能理解。其实一开始接触这些东西还是挺晕的,不过你多看几遍,上机实现可能你就会觉得...

2015-03-11 10:25:35

阅读数 448

评论数 0

一步一步写算法(之循环和递归)

 其实编程的朋友知道,不管学什么语言,循环和递归是两个必须学习的内容。当然,如果循环还好理解一点,那么递归却没有那么简单。我们曾经对递归讳莫如深,但是我想告诉大家的是,递归其实没有那么可怕。所谓的递归就是函数自己调用自己而已,循环本质上也是一种递归。     1)求和递归函数     我...

2015-03-09 14:13:02

阅读数 339

评论数 0

一步一步写算法(开篇)

转载自:http://blog.csdn.net/feixiaoxing/article/details/6835423 算法是计算机的生命。没有算法,就没有软件,计算机也就成了一个冰冷的机器,没有什么实用价值。很多人认为,算法是数学的内容,学起来特别麻烦。我们不能认为这种观点是错误的。...

2015-03-09 11:36:45

阅读数 383

评论数 0

四叉树与八叉树

前序 四叉树或四元树也被称为Q树(Q-Tree)。四叉树广泛应用于图像处理、空间数据索引、2D中的快速碰撞检测、存储稀疏数据等,而八叉树(Octree)主要应用于3D图形处理。对游戏编程,这会很有用。本文着重于对四叉树与八叉树的原理与结构的介绍,帮助您在脑海中建立四叉树与八叉树的基本思想。本文并...

2015-03-04 14:09:14

阅读数 385

评论数 0

堆数据结构

计算机中的堆有两个含义:一个是内存堆  一个是数据结构堆, 这篇文章不是介绍内存堆的。 数据结构中的堆,是用完全二叉树来实现的数据结构,为什么要用完全二叉树而不是其他的类型的树,或者其他数据结构,因为完全二叉树当用数组来具体实现的时候拥有如下性质: 9 5 8 4 1 6 7 2 3这个用数组...

2015-01-07 20:20:41

阅读数 444

评论数 0

十大编程算法助程序员走上高手之路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大...

2014-08-18 17:54:42

阅读数 486

评论数 0

Set和Map的内部结构

摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结...

2014-01-07 21:07:31

阅读数 998

评论数 0

提示
确定要删除当前文章?
取消 删除