数据结构与算法学习day1

主要记录学习算法的道路上的一点一滴,同时希望通过记录能加深理解。

数据结构相关概念

一、逻辑结构。

  1.集合结构  

  这种结构是一种表示一组无关的数据元素的集合,在这个集合里,各个元素之间也没有任何关系,它们的共同点就是同属某一个集合。

  2.线性结构

  线性结构中数据元素之间是一对一的关系。比如单项链表,每一个元素除了自己的数据之外,还有一个指针指向下一个元素。

  3.树形结构

  树形结构的元素之间存在一种一对多的层次关系。比如二叉树,每个元素除了自己的数据之外,还存在两个指针指向子节点元素。

  4.图形结构

  图形结构的元素之间是多对多的关系。

  

二、物理结构。数据结构是指数据的逻辑结构在计算机中的存储形式。

  1.顺序结构存储。

  是把数据存放在地址连续的存储单元里。比如数组,数组之间的元素在内存地址上是连续的。主要的逻辑结构表现形式就是上面的集合结构。

  2.链式存储结构。

  是把数据元素存放在任意的的存储单元里,这组存储单元可以是连续的,也可以是不连续的。在这种情况下,各个元素的存储关系并不能代表反映其逻辑关系,所以需要有存放和其有关系的元素的地址,用来查找其它元素。主要的逻辑结构表现形式是除了集合结构之外的所有逻辑结构。

时间复杂度和空间复杂度

谈起算法不得不提的两个东西就是,时间复杂度和空间复杂度,它们是算法效率高低的指标。一般情况下我们都会比较不同算法的时间复杂度,然后选取更优的算法来作为解决问题的手段。

1.时间复杂度

  在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,记作:T(n)=O(f(n))。它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。

  一般情况下使用大写O来体现时间复杂度的记法,我们称之为大O记法。

时间复杂度的推导方法

1.用常数1取代运行时间中的所有加法常数。

2.在修改后的运行次数函数中,只保留最高阶项。

3.如果最高阶项目存在且不是1,则去除与这个项相乘的常数。

常见的时间复杂度

常用的时间复杂度所耗费的时间从小到大依次是:

2.空间复杂度

  算法的时间复杂度通过计算算法所需的存储空间实现,算法时间复杂度的计算公式及作:S(n)=O(f(n)),n为问题的规模,f(n)为语句相关的n所占的存储空间的函数。

  通常我们都使用时间复杂度来指算法的运行时间的需求,使用空间复杂度来表示空间需求。当不限定词的使用复杂度时,通常是时间复杂度,所以我们的学习重点一般都是以时间复杂度为主。

文章已于修改







































南宁治疗白癜风的医院
北京哪家医院白癜风好



转载请注明:http://www.92nongye.com/ksfc/204621718.html