zoukankan      html  css  js  c++  java
  • 数据结构与算法系列--初识数据结构

              Hellow,everybody ! 有段时间没与大家见面了,今后我会与大家一起学习数据结构与算法。好吧,让我先讲讲我对数据结构与算法的看法与想法吧。

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

    那么就要去理解她喜欢什么,自己怎么做,她才能接受我。数据结构就是编程的需要,所以要想学好编程,一定要先把最神秘的高地攻克----数据结构。

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

         一、数据结构的绪论

    1.1 数据结构的起源

    1.2 数据结构术语

    1.3   逻辑结构与物理结构

    1.4抽象数据类型

        二、算法

    2.1数据结构与算法

    2.2两种算法的比较

    2.3算法的定义

    2.4算法的特性

    2.5算法设计的要求

    2.6算法效率的度量方法

    2.7 函数渐进增加

    2.8算法的时间复杂度

    2.9常见的时间复杂度

    2.10  最坏情况与平均情况

    2.11算法的空间复杂度

         三、线性表

    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.1栈的定义

    4.2栈的抽象数据类型

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

    4.4两栈共享空间

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

    4.6栈的应用

    4.7栈的应用----递归

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

    4.9队列的定义

    4.10队列的抽象数据类型

    4.11循环队列

    4.12队列的链式存储及实现

      五、串

    5.1串的定义

    5.2串的比较

    5.3串的抽象数据类型

    5.4串的存储结构

    5.5朴素的模式匹配算法

    5.6KMP模式匹配算法

      六、树

    6.1树的定义

    6.2树的抽象数据类型

    6.3树的存储结构

    6.4二叉树的定义

    6.5二叉树的性质

    6.6二叉树的存储结构

    6.7遍历二叉树

    6.8二叉树的建立

    6.9线索二叉树

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

    6.11赫夫曼树及其应用

    七、图

    7.1图的定义

    7.2图的抽象数据类型

    7.3图的存储结构

    7.4图的遍历

    7.5最小生成树

    7.6最短路径

    7.7拓扑排序

    7.8关键路径

    八、查找

    8.1查找的概论

    8.2顺序表查找

    8.3有序表的查找

    8.4线性索引查找

    8.5二叉排序树

    8.6平衡二叉树

    8.7多路查找树

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

    8.9散列函数的构造方法

    8.10处理散列冲突的方法

    8.11散列表查找实现

    九、排序

    9.1排序的基本概念与分类

    9.2冒泡排序

    9.3简单选择排序

    9.4直接插入排序

    9.5希尔排序

    9.6堆排序

    9.7并归排序

    9.8快速排序

          

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

             一、数据结构的绪论

    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!

  • 相关阅读:
    磁盘IO工作机制
    java 的IO类库的基本架构
    诡异的NPE--三目运算自动类型转换
    WIN2008服务器不能复制粘贴怎么办
    用nrm一键切换npm源
    Linux常用命令大全(非常全!!!)
    整理 node-sass 安装失败的原因及解决办法
    win10完美去除小箭头
    JS中slice,splice,split的区别
    Win10环境下Redis和Redis desktop manager 安装
  • 原文地址:https://www.cnblogs.com/VitoCorleone/p/3741141.html
Copyright © 2011-2022 走看看