每日学习笔记

算法

1、算法的特征

  • 有穷性

算法的指令或者步骤的执行都必须有明确的定义和描述,执行时间也是有限的。

  • 确切性

算法的每一条指令或者步骤都必须有明确的定义和描述。

  • 输入

一个算法应该有相应的输入条件,用来刻画运算对象的初始情况。

  • 输出
    一个算法应该有明确的输出结果。
  • 可行性
    算法执行步骤必须是可行的,且在有限的时间内完成。

2、分类
按照应用来分类
基本算法、数据结构相关的算法、几何算法、图论算法、规划算法、数值分析算法、加密/解密算法、排序算法、查找算法、并行算法、数论算法等
按照确定性来分类
确定性算法:这类算法在有限的时间内完成计算,且得到的结果唯一,经常取决于输入值。
非确定性算法:这类算法在有限的时间内完成计算,但是得到的结果往往并不唯一,也就是存在多指性。
按照算法思路来分类:递推算法、递归算法、穷举、贪婪算法、分治算法、动态规划算法、迭代算法。
3、算法与公式的关系
公式是一种高度精简的计算方法,可以认为就是一种算法。而算法并不一定是公式,算法的形式可以比公式更复杂,解决的问题更广法。
4、算法与程序的关系
算法与程序设计语言不同。首先熟悉程序设计语言的语法格式,然后才能用这种程序语言编写合适的算法,。
5、算法与数据结构的关系
数据结构是数据的组织形式,可以用来表征特定的对象数据。在计算机程序设计语言中,操作对象是各式各样的数据,这些数据往往拥有不同的数据结构,例如数组、结构体、联合、指针、链表等。不同的数据结构往往拥有不同的处理方法,计算的复杂度也不同,因此算法往往依赖于某种数据结构,也就是说,数据结构是算法实现基础。
数据结构+算法+程序设计语言=程序
算法可以用自然语言表示、流程图表示(顺序结构、分支结构、循环结构)、N-S图表示、伪代码表示、
以上表示方法可以容易转换成相应的C、C++、Java语言过渡!!
6、算法的性能评价
时间复杂度:算法执行所需要消耗的时间,时间越短,算法越好。
空间复杂度:执行所需要的存储控件
(1)程序保存所需要的存储空间,也就是程序大小
(2)在计算机执行过程所消耗的存储空间大小,执行过程将产生中间变量。
7、预处理器添加时要注意
在这里插入图片描述
注意不要在release等版本下添加,那是错的,要在Debug(活动)下添加!

8、随机数?
#include<time.h>
srand(time(NULL));
for(i=0;i<N;i++)
{
arr[i]=rand()/1000;
}//这样子arr[i]里面就有随机数了
在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值。

因此,C提供了srand()函数,它的原型是 void srand( int a)。用来改变这个种子值。
srand( (time(NULL) )中time(NULL)函数是得到一个从1900年1月1日到现在的时间秒数,这样每一次运行程序的时间的不同就可以保证得到不同的随机数了。
foodX = rand() % (Wall::ROW - 2) + 1;
foodY = rand() % (Wall::COL - 2) + 1;//贪吃蛇案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值