数据结构与算法系列--初识数据结构

          Hellow,everybody ! 有段时间没与你们见面了,从此我会与你们一块儿学习数据结构与算法。好吧,让我先讲讲我对数据结构与算法的见解与想法吧。算法

宋桑没有离开公司时,强烈推荐我利用如今富裕的时间去研究一下计算机科学的四大方面。我也是在他的encourage下,首次听到数据机构与算法的。在这方面他说的最多的一句话是:”.NET、JAVA、PHP,这些高级语言,可能会被从此更加牛叉的高级语言所取代。可是计算机科学的四大方面是底层东西,三四十年不会改变。”我是这么理解他这句话的,编程比如是一位sexy lady,U wanna got it.编程

那么就要去理解她喜欢什么,本身怎么作,她才能接受我。数据结构就是编程的须要,因此要想学好编程,必定要先把最神秘的高地攻克----数据结构。数据结构

   书归正传,自从认识了宋桑,我整我的变得颇有冲劲,很自信。以前遇到问题,想学习一些知识,只是想让人手把手教。可是,如今我有信心,你们都是人,别人能够学会的知识,我也必定能够。自学,是本身必定要掌握的技巧。不论从此会不会一直作IT,都要掌握这个技巧。so……我要自学数据结构与算法。我就要把她们当成是sexy lady ,我要拿出攻城拔寨的勇气、毅力、决心去拿下她。宋桑给我推荐了一本《大话数据结构》,这是一本适合入门的关于数据结构与算法的书籍,强烈推荐想自学或想入门的数据结构爱好者能够买一本看看。首先,我把这本书的目录摘出来,让你们对《大话数据结构》能够有个清晰的认识。函数

     1、数据结构的绪论学习

1.1 数据结构的起源spa

1.2 数据结构术语设计

1.3   逻辑结构与物理结构3d

1.4抽象数据类型对象

    2、算法blog

2.1数据结构与算法

2.2两种算法的比较

2.3算法的定义

2.4算法的特性

2.5算法设计的要求

2.6算法效率的度量方法

2.7 函数渐进增长

2.8算法的时间复杂度

2.9常见的时间复杂度

2.10  最坏状况与平均状况

2.11算法的空间复杂度

 

     3、线性表

3.1线性表的定义

3.2线性表的抽象数据类型

3.3线性表的顺序存储结构

3.4顺序存储结构的插入与删除

3.5线性表的链式存储结构

3.6单链表的读取

3.7单链表的插入与删除

3.8单链表的整表建立

3.9单链表的整表删除

3.10单链表结构与顺序存储结构的优缺点

3.11静态链表

3.12循环链表

3.13双向链表

    4、栈与队列

4.1栈的定义

4.2栈的抽象数据类型

4.3栈的顺序存储结构及实现

4.4两栈共享空间

4.5栈的链式存储结构及实现

4.6栈的应用

4.7栈的应用----递归

4.8栈的应用----四则运算表达式求值

4.9队列的定义

4.10队列的抽象数据类型

4.11循环队列

4.12队列的链式存储及实现

 

  5、串

5.1串的定义

5.2串的比较

5.3串的抽象数据类型

5.4串的存储结构

5.5朴素的模式匹配算法

5.6KMP模式匹配算法

 

  6、树

6.1树的定义

6.2树的抽象数据类型

6.3树的存储结构

6.4二叉树的定义

6.5二叉树的性质

6.6二叉树的存储结构

6.7遍历二叉树

6.8二叉树的创建

6.9线索二叉树

6.10树、森林与二叉树的转换

6.11赫夫曼树及其应用

7、图

7.1图的定义

7.2图的抽象数据类型

7.3图的存储结构

7.4图的遍历

7.5最小生成树

7.6最短路径

7.7拓扑排序

7.8关键路径

8、查找

8.1查找的概论

8.2顺序表查找

8.3有序表的查找

8.4线性索引查找

8.5二叉排序树

8.6平衡二叉树

8.7多路查找树

8.8散列表查找(哈希表)概述

8.9散列函数的构造方法

8.10处理散列冲突的方法

8.11散列表查找实现

9、排序

9.1排序的基本概念与分类

9.2冒泡排序

9.3简单选择排序

9.4直接插入排序

9.5希尔排序

9.6堆排序

9.7并归排序

9.8快速排序

      

                   这就是整本书的目录了,看来宋桑的话很对。要学会写博客,知识就是在概括复习中掌握的。温故而知新,能够为师矣。就在我刚才摘录整本书的目录时,我对整本书的大体内容有了一个全面的理解。说实话,以前有看过一遍,粗略的看了一遍。看完一点印象都没有。阅读一本书,必定要明白书中要讲的东西是什么,怎么展开的。因此,目录很重要。这是数据结构与算法系列的受篇文章,那么就让咱们从这个目录的第一部分开始吧。

         1、数据结构的绪论

1.1数据结构的起源

1968年,美国的高德纳教授在他的《计算机程序设计艺术》第一卷《基本算法》中,较为详细的阐述了数据结构。同年,讲数据结构独立为一门学科。以后,70年代出现了大型的程序,软件也相对独立。人们认为程序设置的实质是对肯定问题选择一种好的结构,加上一个好的算法。程序设计=数据结构+算法这是一条定律。

             1.2基本概念和术语

             数据:是计算机能够处理的符号集合。

数据元素:是组成数据的,有必定意义的基本单位。在计算机中一般做为总体处理。

数据项:一个数据元素由若干个数据项组成。数据项是数据不可分割的最小的单位。

数据对象:是相同数据元素的集合,是数据的子集。

数据结构:结构就是关系,不一样的数据元素之间不是独立的,而是存在某种关系。咱们将这些关系称为结构。数据结构,就是彼此之间存在一种或多种特定关系的数据元素的集合。

1.3逻辑结构与物理结构

逻辑结构,就是数据对象中数据元素之间的关系。

逻辑结构分为四类:

1.集合结构

各个数据元素除了同属于一个集合中,没有任何联系。

QQ Photo20140521135506

2.图形结构

数据元素之间是多对多的关系

QQ Photo20140521135603

3.树形结构

数据元素是一对多的关系

QQ Photo20140521135637

3.线性结构

数据元素之间是一对一的关系

QQ Photo20140521135719

物理结构(存储结构),逻辑结构在计算机中的存储形式。

物理结构分为两种:

顺序存储:数据元素存放在连续的地址中。

链式存储:数据元素能够存放在连续的地址,也但是不连续的地址。

1.4 抽象数据类型

    数据类型:一组相同性质的值的集合及定义在此集合上的操做总称。你们能够把他当作是C#里定义的一个类,类有属性、方法。

抽象数据类型:一个数据模型,及定义在此模型上的操做。

抽象数据类型的描述:

QQ Photo20140521140729

 

最后让咱们用一张图来总结一下本章的内容:

QQ Photo20140521140852

 

QQ Photo20140521140927

这就是数据结构绪论的主要内容了。Next,算法。Come on!

相关文章
相关标签/搜索