
数据结构与算法设计
文章平均质量分 82
August_1989
JAVA核心技术,中间件,高性能,高并发,性能调优,机器学习算法
展开
-
C++ 中的hash_map详细讲解
用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ... 这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最傻的方法就是取得所有的记录,然后原创 2013-07-19 21:03:02 · 1197 阅读 · 0 评论 -
经典排序算法的性能比较
1.稳定性比较 插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的 选择排序、希尔排序、快速排序、堆排序是不稳定的 2.时间复杂性比较 插入排序、冒泡排序、选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂性为O(nlog2n) 线形排序的时间复杂性为O(n); 3.辅助空间的比较 线形排序、二路归并排序的辅助空间为O(n),原创 2013-07-27 10:24:30 · 1056 阅读 · 0 评论 -
经典排序算法实现
排序算法是经常使用的算法,在STL中也有一个比较牛X的快速排序(sort),但是我们不能只会调用sort呀!?作为一个好学的同学,我们要知道各种排序的内部是怎么实现滴~~~提到排序算法我们要知道两个经常提到的概念: (1)排序算法的稳定性:所谓“稳定性”是指,在待排序数组出现的两个相同的元素,排序之后相对维持保持不变。比如:待排序数组为arr[] = {1,4,3,1},排序之后元素变为ar原创 2013-08-01 22:34:43 · 953 阅读 · 0 评论 -
hash表详细讲解及实现
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。 对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快原创 2013-07-19 11:00:31 · 3603 阅读 · 1 评论 -
从B 树、B+ 树、B* 树谈到R 树
从B 树、B+ 树、B* 树谈到R 树 转自: 作者:July、weedge、Frankie。编程艺术室出品。 说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。 第一节、B树、B+树、B*树 1.前言: 动态查找树主要有:二叉查找树(Binary转载 2013-07-19 10:52:39 · 1105 阅读 · 0 评论 -
从Trie树(字典树)谈到后缀树
从Trie树(字典树)谈到后缀树 转自: 作者:July、yansha。 出处:http://blog.youkuaiyun.com/v_JULY_v 。 引言 常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来讲另外两种树:Tire树与后缀树。不过,在此之前,先来看两个问题。 第一个问题: 一个文本文件,大约有一万转载 2013-07-19 10:43:51 · 1215 阅读 · 0 评论 -
最长公共子序列问题(不连续)
最长公共子序列(不连续)问题:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。最长公共子序列就是求给定两个序列的一个最长公共子序列。例如,X=“ABCBDAB”,Y=“BCDB”是X的一个子序列。 问题分析: 给定两个序列A和B,称序列Z是A和B的公共子序列,是指Z同是A和B的子序列原创 2013-07-15 09:21:52 · 1698 阅读 · 0 评论