什么是算法 | | 数据结构 学习笔记002

9/24 OFFICE
什么是算法 | | 数据结构 学习笔记001

算法 Algorithm

  • 一个有限指令集
  • 接受一些输入(有些情况下不需要输入)
  • 产生输出
  • 一定在有限步骤之后终止
  • 每一条指令必须
    1. 有充分明确到目标,不可以有歧义
    2. 计算机能处理的范围之内
    3. 描述应不依赖于任何一种计算机语言以及具体的实现手段
选择排序算法的伪码描述
void SelectionSort( int List(), int N){
	for(i=0; i<N; i++){
		MinPosition = ScanForMin( List, i, N-1);
		//从List[i]到List[N-1]中找最小元, 并将其位置赋给MinPosition
		Swap(List[i], List[MinPosition]);
		//将未排序部分到最小元换到有序部分到最后位置
	}
}

什么是好算法

空间复杂度S(n)

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

时间复杂度T(n)

根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们在有生之年都等不大运行结果。
在这里插入图片描述
在这里插入图片描述

讨论1.5 分析“二分法”
查找算法中的“二分法”是这样定义的:
给定N个从小到大排好序的整数序列List[],以及某待查找整数X,我们的目标是找到X在List中的下标。即若有List[i]=X,则返回i;否则返回-1表示没有找到。
二分法是先找到序列的中点List[M],与X进行比较,若相等则返回中点下标;否则,若List[M]>X,则在左边的子系列中查找X;若List[M]<X,则在右边的子系列中查找X。
试写出算法的伪码描述,并分析最坏、最好情况下的时间、空间复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值