3. 什么是数据结构?什么是算法

数据结构

  1. 数据对象在计算机中的组织方式
    逻辑结构
    物理存储结构
  2. 数据对象必定与一系列加在其上的操作相关联
  3. 完成这些操作所用的方法就是算法

数据类型:
数据对象集
数据集合相关联的操作集
抽象:
与存放数据的机器无关
与数据存储的物理结构无关
与实现操作的算法和编程语言均无关
只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题。

算法

  1. 一个有限指令集
  2. 接受一些输入(有些情况不需要输入)
  3. 产生输出
  4. 一定要在有限步骤之后终止
  5. 每一条指令必须
    有充分的的目标,不可以有歧义
    计算机能处理的范围内
    描述应不依赖任何一种计算机语言以及具体的实现手段

例如:选择排序的伪代码描述

void SelectionSort(int List[], int N)
{ /* 将N个整数List[0]...List[N-1]进行非递减排序*/
    for (i = 0; i < N; i++)
    {
        MinPosition = ScanForMin(List, i, N–1);
        /* 从List[i]到List[N–1]中找最小元,并将其位置赋给MinPosition */
        Swap(List[i], List[MinPosition]);
        /* 将未排序部分的最小元换到有序部分的最后位置*/
    }
}

抽象:1.List到底是数组还是链表(虽然看上去很像数组)?2.List到底是数组还是链表(虽然看上去很像数组)?

什么是好的算法

空间复杂度S(n):根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的
规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。
在这里插入图片描述

时间复杂度T(n):根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规
模有关。时间复杂度过高的低效算法可能导致我们在有生之年都等不到运行结果。
在这里插入图片描述
在分析一般算法的效率时,我们经常关注下面两种复杂度:

  1. 最坏情况复杂度T worst(n)
  2. 平均复杂度T avg(n)
    T avg(n) <= T worst(n)

复杂度小技巧

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值