算法初级
2018-07-03 本文已影响0人
Frank_io
伪代码与流程图
机构化编程
- 一行一行的执行代码
- 有条件控制语句
if...else...
- 有循环控制语句
while(exp) do...
伪代码
我理解的伪代码就是用自己的语法写的代码语句
伪代码的好处
- 不用纠结于语法的细节,语法是自己定的
- 可以对比语言设计者的想法,从而加深印象
我的语法
a <= 1 表示将1赋值给了a
- 条件控制语句
if xxx
1
elseif yyy
2
else
3
end
- 循环语句
n <= 0
while n < 10
print n
n <= n+1
end
-
length
表示一个容器,'length'
表示一个字符串,length <= 'length'
表示将字符串放入到容器中
流程图
流程图一个最简单的例子
从正整数数组a里面找出最小的数字,并打印出来
a <= {
'0' : 23
'1' : 43
'2' : 230
'3' : 1321
'4' : 90
'length' : 5
}
min <= a['0']
index <= 1
while index < a['length']
if a[index] < min
min <= a[index]
end
index <= index + 1
end
print min
什么是算法
维基百科定义为算法是一个表示为有限长列表的有效方法
算法的特征归纳
- 输入:一个算法必须有零个或以上的输入量。
- 输出:一个算法应有一个或以上的输出量,输出量是算法计算的结果。
- 明确性: 算法的描述必须无歧义,以保证算法的实际执行结果是精确的匹配要求或期望,通常要求实际运行结果是确定的。
- 有限性:依据图灵的定义,一个算法是能够呗任何图灵完备系统模拟的一串运算,而图灵机只有有限个状态,有限个输入符号和有限个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
- 有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
什么是数据结构
简单来说就是数据的结构
- 我们要解决一个跟数据相关的问题
- 分析这个问题,想出对应的数据结构
- 分析数据结构,想出算法
- 数据结构和算法是相互依存,不可分开的
大的分类包括:分治法、动态规划法、贪婪算法、线性规划法、简并法
排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 基数排序
- 快排
- 归并排序
- 队排序等
推荐一个排序可视化网站:https://visualgo.net/bn/sorting