数据结构概括

来源:互联网 发布:环形数据库 编辑:程序博客网 时间:2024/04/29 10:34

         最近在找实习的时候发现,企业还是很看重数据结构的,即使我应聘的是java开发,既然重要,那咱们就学吧,其实也算不上学了,因为大二的时候已经学过了,只不过在后来的项目中很少用到,所以忘了,现在就相当于温习一下了,这里先大概介绍一下数据结构的知识


     1.数据结构的任务是,讨论数据的各种逻辑结构,在计算机中的存储结构以及各种操作的算法设计

    2.名言:数据结构+算法=程序

                 数据结构:所要解决问题的数学模型

                算法:处理问题的策略

                程序设计:为计算机处理问题编制的一组指令集

    3.数据结构包括三方面:逻辑结构、存储结构、操作。

    4.从数学的角度来说,数据结构是一个二元组,(D,S)

                          D是数据元素的有限集,S是D上关系的有限集

    5.数据结构从逻辑上来说,也就是其逻辑结构,分为线性结构和非线性结构从存储上来说也就是其存储结构,分为顺序和链式。


    6.数据的操作包括:增删改查,遍历,判断,求长度等


    7.有穷性和可行性是算法最重要的两个特征

    8.算法是建立在数据结构之上,对数据结构的操作需要用算法来描述;算法设计依赖数据的逻辑结构,算法的实现依赖数据的 存  储结构

    9.算法分析:时间效率和空间效率,有时两者是矛盾的,此时时间效率优先

    10.大O表示法,只保留最高阶,多涉及到数学中的对数函数、指数函数、数列等知识

           复杂度:O(1)<O(log2^n)<O(n)<O(nlog2^n)<O(n^2)

          如果我们设计的算法其时间复杂度是后两种的话,就需要好好再优化一下了,尤其是大数据时


     最后说一下数据结构实现的问题,国内大多数是用C/C++实现的,少量用java实现,用C/C++实现的好处是,对数据结构会有更深入的理解,用java的话倒是更容易理解,比较直观,我的建议是,大家学什么语言就用什么语言来实现吧,这样不仅熟悉了数据结构,更熟悉了语言,精通了一个之后其他的就随便了,主要看个人。我也曾经在语言上纠结过,不过后来想明白了,既然我是学java出生,而且做项目也用java,那就用java来实现吧,不然力量分散,什么也学不好。我们也发挥一下“集中优势兵力”的思想哈