算法与数据结构第三版——概论

文章目录

  • 第一章 概论
        • 基本概念和术语
        • 时间复杂度

第一章 概论

基本概念和术语
  1. 数据是信息的载体

  2. 数据元素是数据的基本单位

  3. 数据项是数据的最小单位

  4. 数据对象是具有相同性质的数据元素的集合

  5. 数据结构是相互之间存在一种或多种特定关系数据元素的集合

  6. 数据结构包括三方面的内容:逻辑结构、物理结构和数据的运算

  7. 逻辑结构是数据元素之间的逻辑关系,与存储无关,是独立于计算机的

  8. 存储结构是数据结构在计算机中的表示,它包括数据元素的定义和数据关系的表示

  9. 数据的逻辑结构:线性结构和非线性结构
    或集合、线性结构、树型结构、图或网状结构

  10. 数据的存储结构:顺序存储、链式存储、索引存储和散列存储

  11. 算法的五个特性:有穷性、确定性、可行性、输入、输出

  12. 一个算法应该是问题求解步骤的描述

1.以下与数据的存储结构无关的术语是
  A.循环队列		B.链表	    	C.哈希表     		D.2.以下数据结构中,哪一个是线性结构
  A.广义表        B.二叉树        C.稀疏矩阵           D.3.以下属于逻辑结构的是
  A.顺序表        B.哈希表        C.有序表             D.单链表

4.设计一个“好”的算法,应考虑达到的目标是
  A.可行的			B.健壮的			C.无二义性的			D.可读性好的

5.数据结构与数据类型的形式定义分别为:
  Data-Structure=(D,R),
  Data-Type=(D,R,P)
  试选择D,R,P的确切含义。
  a)数据
  b)数据元素
  c)数据对象
  d)关系
  e)存储结构
  f)基本操作
-------------------------------------------------------------
1.循环队列代表顺序存储
  链表代表链式存储
  哈希表代表散列存储
  
2.广义表是线性表的推广,不是线性结构
  常用的线性结构有:线性表,栈,队列,双队列,数组,串
  常见的非线性结构有:二维数组,多维数组,广义表,树,图

3.顺序表是线性表的顺序存储结构,单链表是线性表的链式存储结构,都属于线性表的存储结构
  有序表是指该表保存的数据元素的关键字之间是有序的,
  这说明的是数据元素之间的逻辑关系,因此是逻辑结构

4.一个算法的优劣应该从以下几方面来评价:
  正确性、可读性好、健壮性、高效性
  不能把算法的五个特征混淆成“好”算法应达到的目标

5.数据结构是具有一种或多种特定关系的数据元素的集合
  逻辑结构包括数据元素的定义和关系的表示
时间复杂度
1.时间复杂度
  x=2;
  while(x<n/2)
	  x=x*2;
	
2.时间复杂度
  for(int i=0;i<=n;i=i*2)
	  for(int j=0;j<n;j++)
		.....
		
3.在相同的时间规模下,O(n)的算法总是优于O(2^n)的算法

4.下述函数中渐近时间最小的是
  A.T1(n)=nlog2n+1000log2n
  B.T2(n)=nlog23-1000log2n
  C.T3(n)=-1000log2n
  D.T4(n)=2nlog2n-1000log2n

5.时间复杂度
  for(int i=0;i<n-1;i++)
	for(int j=n;j>=i;j--)
		s;

6.时间复杂度
  i=1;
  while(i<=n)
  	i=i*3;

--------------------------------------------------------
1.第i个循环完毕,x=2^(i+1),设x=n/2,→i+2=log2n
  成倍增加的,都会与log有关

2.内存循环,执行n次
  外层循环,成倍增加,与log有关

4.O(log n) < O(n) < O(nlog n) < O() < O(2^n) < O(n!)
  就是算时间复杂度,取大头
  A.nlogn		B.n			C.n²		D.nlogn

5.外层循环  1....n-2  共n-2次
  内层循环  n~1 n次 ....n~n-2 3(n-2)*(n+3)/2

6.成倍增加,log2n
  一开始我写的是log3n,搜索了一下发现,底数不重要
  

你可能感兴趣的:(王道,数据结构,算法)