参考学习网址:

一、数学基础

等比数列,等差数列等很基础,公式一搜遍地都是,不再赘述

asp.net 树结构 .net数据结构和算法_数据

阶乘c#实现:

点击查看代码

static void Main(string[] args)
        {
            Console.WriteLine("请输入需要阶乘的数:");
            string a=Console.ReadLine();
            Console.WriteLine("阶乘结果为:"+Fact(int.Parse(a)));
            Console.ReadKey();
        }
        public static int Fact(int n)
        {
            if(n<=1)
            {
                return 1;
            }
            else
            {
                return n * Fact(n - 1);
            }
        }

二、数据结构发展历史
1、无结构阶段:程序处理的是纯粹的数值,数据关系主要为数学公式或数学模型
2、结构化阶段:用于非数值处理领域,数据表示成为数据设计的重要问题
3、面向对象:减少重复设计的部分,大量的封装类出现,减少了程序设计者的负担

三、算法
计算1-100的和(循环加一遍or用等差数列求和?),方法不同效率不同

1、算法特性
1)输入输出:算法具有零个或者多个输入,具有至少一个的输出。
2)确定性:相同的输入智能得到相同的输出
3)有穷性:在有限的步骤结束
4)可行性

2、设计要求
1)正确性:满足余弦指定的功能与性能的需求
A、无语法错误 B、对于几组输入能够得到满足需求的结果
C、对于非法输入抛出异常 D、严苛数据依旧能产生满足需求的结果
2)健壮性:输入数据不合法,能作出相关处理
3)可读性
4)耗时低、占用空间少

四、数据结构基础
1、基本概念和术语
1)数据:计算机识别、存储和加工处理的信息符号(整形、浮点型、声音、视频、图像)
2)数据元素:基本单位,一个数据元素由若干个数据项组成
3)数据项:描述数据的最小单位
4)数据对象是性质相同的一类数据元素的集合,是数据的一个子集
5)数据结构:数据和关系的集合

五、四大逻辑结构

1、集合结构:除同属一个集合外,并无其他关系

asp.net 树结构 .net数据结构和算法_c#_02

2、线性结构:数据元素之间存在一对一关系

asp.net 树结构 .net数据结构和算法_c#_03

3、树形结构:一对多

asp.net 树结构 .net数据结构和算法_.net_04

4、图形结构:多对多

asp.net 树结构 .net数据结构和算法_数据_05

六、数据类型
1)数据类型:取值范围和对数进行操作的总和
2)抽象数据类型:数学模型及模型上的操作,与操作分离,从而实现封装

七、复杂度

1、时空复杂度定义

1)时间复杂度:运行所需时间

时间频度T(n)=O(f(n)),O(f(n))为时间复杂度

2)空间复杂度:所需内存大小

固定部分:代码空间、数据空间等(静态)

可变空间:动态分配空间(递归栈所需空间),与算法有关

2、度量时间复杂度

1)事后统计法:统计比较算法运行时间(测试较为困难)

2)事先估计法:O表示最坏情况、Ω表示最好情况,θ表示平均情况(一般用O)

asp.net 树结构 .net数据结构和算法_数据结构与算法_06

八、时间复杂度的度量方法
O(n)函数中间的值为程序执行的步骤次数
主要观察程序中的循环结构,每一个循环结构代表执行循环中的指令n次
1、O(1)  /  O(C)  C代表常数
2、O(n)
3、O(n^2)
4、O(logn)

点击查看代码

int i=1,n=10000;    //执行一次
    while(i<=n){    //执行logn次
        i*=2;
    }
    return 0;       //执行一次

5、O(n^1/2) 点击查看代码

while(x >= (y+1)*(y+1))
{
   y=y+1; ①
}

大小关系:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)