高级数据结构

数据结构清单

Binomial Heap

Leftist Tree:左倾堆

?

重型网络教程

1.纸上谈兵:算法与数据结构

2.CS 598 JGE:Advanced Data Structures(Fall 2015)

3.COP 5536 Advanced Data Structures(Florida)

4.wikibooks Data Structures

5.Geeksforgeeks(very much)

6.COMP 5408:Advanced Data Struestures

7.Stackoverflow

书籍推荐

Algorithms in C (Computer Science Series)

?(2人评价)

作者: Robert Sedgewick?
出版社: Addison-Wesley Professional?
出版年: 1990-01-11

评语:非常耐心的讲解一些常见的算法,很容易入门。这本书涉猎面较广,除了经典的算法,还有比如数值计算、信号处理、字符串处理、并行运算算法的介绍。

Data Structures and Algorithm Analysis in C (2nd Edition)

?8.8?(61人评价)

作者: Mark Allen Weiss?
出版社: Addison Wesley?
出版年: 1996-09-19

评语:介绍算法和数据结构,讲解很深入。但有些部分的讲解有些过于概括,不容易理解。

The Design and Anaylsis of Computer Algorithms

作者:?Alfred V. Aho?/?John E. Hopcroft?/?Jeffrey D. Ullman?
出版社:?Addison-Wesley
出版年:?1974-1-11
页数:?470
定价:?USD 71.60
装帧:?Paperback
ISBN:?978020100029

Algorithms on Strings, Trees, and Sequences

作者:Dan Gusfield

高级数据结构

1.MIT的高级数据结构教程

链接: Advanced Data Structures

这门课包含各种让本屌世界观崩坏的奇诡数据结构和算法,它们包括但不限于:

  • 带"记忆"的数据结构(Data Structure with Persistence)。
  • van Emde Boas(逆天的插入,删除,前驱和后继时间复杂度)。
  • o(1)时间复杂度的的LCA、RMQ和LA解法。
  • 奇幻的o(n)时间复杂度的Suffix Tree构建方法。
  • o(lglgn)的BST。
  • ...

总之高潮迭起,分分高能,唯一的不足就是没有把它们实现一圈

2. 林厚从主编的《高级数据结构》

林厚从主编的《高级数据结构》在基本数据结构的基础上,围绕一些常用的高级数据结构,结合大量实战例题,深入分析"数据结构是如何服务于算法的"。本书主要内容包括:哈希表、树与二叉树、优先队列与堆、并查集、线段树、树状数组、伸展树、Treap、AVL树、红—黑树、SBT、块状链表与块状树、后缀树与后缀数组、树链剖分与动态树等。

3. Advanced Data Structures in C++

Advanced Data Structures in C++; ??$10.00;?? 826 pages; ? 2006, 2014;? Vic Broquard; ? Broquard eBooks;?? ISBN: 978-0-9705697-7-6 3rd Edition

Link:
http://www.broquard-ebooks.com/advanced-data-structures-in-cpp/

Chapter 1 — A Review of Classes
Chapter 2 — Advanced Features of Classes
Chapter 3 — Operator Overloading
Chapter 4 — Inheritance
Chapter 5 — Abstract Base Classes
Chapter 6 — C++ Error Handling
Chapter 7 — A Review of the Basic Container Classes
Chapter 8 — Templates
Chapter 9 — Binary Files and Hashing Techniques
Chapter 10 — Trees
Chapter 11 — Sorting Algorithms
Chapter 12 — B-trees and AVL Trees
Chapter 13 — Heaps, Priority Queues, and Graphs
Chapter 14 — Of Sets and Maps
Chapter 15 — An Introduction to the STL — Standard Template Library
Chapter 16 — Complex Analysis

4.CSDN上有不少"高级数据结构"的资源

知乎数据结构

  1. 如何学习数据结构

链接:https://www.zhihu.com/question/21318658

资源论

1.读书橙书: 《算法 第四版》

亚马逊中文版: amazon.cn的页面

线上资源: Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne

配套的习题答案:

jimmysuncpt/Algorithms

aistrate/AlgorithmsSedgewick · GitHub

http://algs4.cs.princeton.edu/code/

Programming Assignments

2.Coursera课程:

Part 1: https://www.coursera.org/course/algs4partI
Part 2:
https://class.coursera.org/algs4partII-006

3.斯坦福的算法公开课

Part 1: https://www.coursera.org/course/algo

Part 2: https://www.coursera.org/course/algo2

4.普林斯顿的算法课程

Coursera - Free Online Courses From Top Universities

Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne

5.算法可视化

http://visualgo.net

http://zh.visualgo.net/zh/

?

6.在线视频客课堂:网易云课堂,慕课

★★★★★浙江大学的:数据结构 - 网易云课堂

★★★★★清华大学的:数据结构-学堂在线慕课(MOOC)平台

7.数据结构-C语言

《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

附带数据结构清单

方法实践论

  1. 数据结构的前期学习要重理解。以倒推的方式,搞清楚每种数据结构产生的目标。多画画图,思考一下,理解透彻以后。再去做练习题会事半功倍。
  2. 把线性表、链表、树、图、各种排序算法,熟悉一遍,熟悉需要达到的结果是提到一种结构,脑海立马可以反映出其中元素的组织方式,插入删除操作的步骤。
  3. 把所有的(大部分)的算法和数据结构写一遍。这是一个做合格程序员的基础;
  4. 把《STL源码剖析》看看。会对设计实现有一些新的认识。
  5. 参考STL的实现,抛去内存管理和迭代器的部分只看实现的话还是很容易从中学到东西的。
    从vector、list到 hashtable 到红黑树等都有;
  6. 强啃linux内核剖析(同时在参考30天自制操作系统和thu的ucore os的7个实验),看到里面的源码,更加进一部的理解了数据结构,操作系统;
  7. 把所有经典算法写一遍:二分查找,几种经典排序如冒泡,快排,归并排序,并弄清楚他们的差别;top-k,二叉树,二叉树查找,平衡树,B树系列,大小根堆,最好知道各自的应用场景加深理解;
  8. 看算法源码:看一些开源系统里面应用算法知识的源码,比如缓存系统里面的双向链表+hash实现;数据库系统里面的B+树的使用实现过程;
  9. 刷题:<剑指Offer>,<编程之美>,<结构之法:面试和算法心得>,LeetCodeOnlineJudge,九度OnlineJudge,用代码记录你的成长之路,冉文杰算法问题选编,
    LintCode - 编程面试题在线训练平, LeetCode / LintCode 答案查询
  10. 不要总折腾数据结构、发明数据结构,理解不同应用场景的特点,远比一味地看算法、数据结构来的实在, 机械硬盘为什么索引文件系统常常采用B+树?因为机械硬盘顺序读取快、随机读取慢的问题,B+树就是专门针对机械硬盘这个工作特点提出的;
  11. 开窍方法之一:学习LISP
  12. 去杭电,pku之类的oj上刷刷题目
  13. The Science of Programming,证明简单代码段的正确性是一个很神奇的技能——因为面试时大多数公司都会要求在纸上写一段代码,然后面试官检查这段代码,如果你能够自己证明自己写的代码是正确的,面试官还能挑剔什么呢?
  14. 进阶版:《STL源码剖析》

学习数据结构/算法要经历3个阶段:

理解数据结构/算法的原理
也就是说能够在脑子里明白这个数据结构/算法是怎样工作的,知道这样做的正确性。当然,如果理解有困难可以借助其他知友们推荐的可视化工具:VisuAlgo - 数据结构和算法动态可视化 (Chinese)

用C/C++实现
这一步也是最考验一个人编程基本功的。写出简洁、优雅、具有表现力的代码能够使数据结构的学习变得很简单。反之,如果接口设计得太复杂、边界情况不注意处理或者不注意效率的话,就会出现各种bug:内存泄漏、野指针、递归栈溢出……
因此,建议学习的时候多参考优秀的教材。我用的是邓俊辉大大的数据结构C++版(这里安利一下学堂在线上的配套MOOC数据结构(2015秋)-学堂在线慕课(MOOC)平台)和Weiss的数据结构与算法分析。这两本书的主页上都提供了源代码下载。

分析时间和空间复杂度、优点、缺点以及适用于解决的问题

2.如何将数据结构和算法应用到实际之中

链接: https://www.zhihu.com/question/20066988

?

3.Coursera(或其他慕课平台)上有哪些算法数据结构相关的课程值得推荐

链接: https://www.zhihu.com/question/49606500

4.学习算法与数据结构,有什么比较好的mooc推荐么,还有比较好的书籍推荐?

链接: https://www.zhihu.com/question/34605825

5.有哪些类似带花树的冷门算法或数据结构?

链接: https://www.zhihu.com/question/40028742

?

6.有哪些算法或数据结构是ACM大牛们在比赛中创造出来的?

链接: https://www.zhihu.com/question/26547156

7.你所读的计算机科学方向,有哪些不错的讲义(Notes)?

链接: https://www.zhihu.com/question/38300204

8.哪本《数据结构与算法》最好?

链接: https://www.zhihu.com/question/21628833

9.用浅显易懂的方式来讲解数据结构和算法

链接:
https://zhuanlan.zhihu.com/DataStructureAndAlgorithm

10. 我的数据结构之路

链接: https://zhuanlan.zhihu.com/data-structure

?

11. 算法数据结构中有那些奇技淫巧

链接: https://www.zhihu.com/question/33776070

?

时间: 2024-08-10 02:09:57

高级数据结构的相关文章

Python中的高级数据结构

数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择,例如Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint.本文将介绍这些数据结构的用法,看看它们是如何帮助我们的应用程序的. 关于四种内建数据结构的使用方

高级数据结构实现——自顶向下伸展树

[0]README 1) 本文部分内容转自 数据结构与算法分析,旨在理解 高级数据结构实现——自顶向下伸展树 的基础知识: 2) 源代码部分思想借鉴了数据结构与算法分析,有一点干货原创代码,for original source code, please visithttps://github.com/pacosonTang/dataStructure-algorithmAnalysis/tree/master/chapter12/p345_topdown_splay_tree 3) you c

Python中的高级数据结构(转)

add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据 结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供 选择,例如Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint.本文将介绍这些数据结构的用法,看 看它

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考下 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择

GO语言的进阶之路-Golang高级数据结构定义

GO语言的进阶之路-Golang高级数据结构定义 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过Golang的基本数据类型,字符串和byte,以及rune也有所了解,但是说起高级点的数据类型,可能我们还是不太清楚,那么今天就跟着我脚步一起学习一下这些高级数据类型数据吧.相信有部分人可能学习过Python,那么我这篇博客基本上不用看了,因为对你来说会觉得so easy.因为太多的相似之处了,只是写法不同.本章主要介绍数组(array),切片(scice),字典(m

二叉图(高级数据结构)

一.定义 二叉图(Binary-Map),一种C++14规范中引入的高级数据结构.其集合了二叉树和图论的优点,在世界算法数据结构大会上由斯茂·斯迪尤德恩特首先提出.  二叉图在形式上类似于二叉树,其实现类似于图论(在下面的代码中有介绍).由N个点,E条边构成,E在等于N-1时二叉图的复杂度退化为二叉树,其主要特征是二叉图的深度为depth以下的点中可以以图的方式两两连接,并忽略其中边权,直接理解为两点重合,从而达到以二叉形式实现连通环的目的.  其形式近似于完全连通的杨辉三角或子节点重合的完全二

Python高级数据结构(一)

数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择,例如Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint.本文将介绍这些数据结构的用法,看看它们是如何帮助我们的应用程序的. 关于四种内建数据结构的使用方

高级数据结构:优先队列、图、前缀树、分段树以及树状数组详解

优秀的算法往往取决于你采用哪种数据结构,除了常规数据结构,日常更多也会遇到高级的数据结构,实现要比那些常用的数据结构要复杂得多,这些高级的数据结构能够让你在处理一些复杂问题的过程中多拥有一把利器.同时,掌握好它们的性质以及所适用的场合,在分析问题的时候回归本质,很多题目都能迎刃而解了. 这篇文章将重点介绍几种高级的数据结构,它们是:优先队列.图.前缀树.分段树以及树状数组. 一.优先队列 1.优先队列的作用 优先队列最大的作用是能保证每次取出的元素都是队列中优先级别最高的,这个优先级别可以是自定

JS高级-数据结构的封装

最近在看了<数据结构与算法JavaScript描述>这本书,对大学里学的数据结构做了一次复习(其实差不多忘干净了,哈哈).如果能将这些知识捡起来,融入到实际工作当中,估计编码水平将是一次质的飞跃.带着这个美好的愿望,开始学习吧O(∩_∩)O~~ 我们知道在JS中,常常用来组织数据的无非是数组和对象(这些基础就不介绍了).但在数据结构中,还有一些抽象的数据类型:列表.栈.队列.链表.字典.散列.集合.二叉树.图等,可以用来更好的对实际场景建模.当然这些数据类型,原生JS不支持,那么就需要通过封装