数据结构—概述

  • 导图
  • 概念介绍
  • 实战练习
  • 总结

  由于参加自学考试,针对数据结构进行了专门的复习,从中不仅仅是获得了知识,更多的是将理论知识转换为实际应用,从而解决我们遇到的各种问题。 数据结构(Data Structure)是将数据进行组织利用算法实现并在计算机内存储的方式,为什么这么说呢?那咱们先看一张图。

导图

  此图是对整个数据结构总结的一个概括图。接下来的学习过程,每小节都会单独介绍。

概念介绍

1. 数据:所有被计算机存储、处理的对象。比如,数值,字符串,表格,图像,声音等等。

2. 数据元素:数据的基本单位,简称为元素。

3. 数据项:组成数据元素,又称为字段或域。是数据的不可分割的最小标识单位

4.逻辑结构:数据元素之间的逻辑关系。四类基本逻辑结构包括集合,线性结构,树形结构,图结构

5.存储结构:逻辑结构在计算机中的存储实现。存储方式主要有顺序存储方式,链式存储方式,索引存储方式和散列存储方式

6.运算:对逻辑结构的加工。基本运算包括有建立、查找、读取、插入和删除

7.算法分析:①正确性;②易读性;③健壮性;④时空性(时间复杂度和空间复杂度)。

实战练习

 int num1, num2;
 for(int i=0; i<n; i++){ 
     num1 += 1;
     for(int j=1; j<=n; j*=2){ 
         num2 += num1;
     }
 } 

计算一下以上代码的时间复杂度?


首先,看一下时间复杂的分析步骤:
1. 计算出基本操作的执行次数T(n)
 基本操作即算法中的每条语句(以分号作为分割),语句的执行次数也叫做语句的频度。在做算法分析时,一般默认为考虑最坏的情况。
2. 计算出T(n)的数量级
 求T(n)的数量级,只要将T(n)进行如下一些操作:
忽略常量、低次幂和最高次幂的系数
令f(n)=T(n)的数量级。
3. 用大O来表示时间复杂度
 当n趋近于无穷大时,如果lim(T(n)/f(n))的值为不等于0的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n))。


1.语句int num1, num2;的频度为1;
 语句i=0;的频度为1;
 语句i< n; i++; num1+=1; j=1; 的频度为n;
 语句j<=n; j* =2; num2+=num1;的频度为n*log2n;
 T(n) = 2 + 4n + 3n*log2n
2.
 忽略掉T(n)中的常量、低次幂和最高次幂的系数
 f(n) = n*log2n
3.
 lim(T(n)/f(n)) = (2+4n+3n* log2n) / (n* log2n)
 = 2* (1/n)* (1/log2n) + 4* (1/log2n) + 3
 当n趋向于无穷大,1/n趋向于0,1/log2n趋向于0
 所以极限等于3。
 T(n) = O(n*log2n)

总结

  概述部分就先写到这里,首先让大家都对这一部分有一个整体的认识,从整体到局部,再从部分到整体,知识的学习过程就是一个不断反复循环的过程,不断的总结。

你可能感兴趣的:(数据结构,应用,结构)