小菜开始学习算法(返璞归真->程序=数据结构+算法)
来源:互联网 发布:手机百度软件exscl 编辑:程序博客网 时间:2024/05/29 07:19
算法
算法(algorithm)就是定义良好的计算过程,它取一个或一组值作为输入,并产生出一个或一组作为输出。
衡量算法效率的常用标准是速度,即一个算法得到最后所需要的时间。
算法分析即指对一个算法所需要的资源进行预测。
RAM模型包含了真实计算机中常见的指令:算术指令(加法,减法,乘法,除法以,取余,向下取整,向上取整指令),数据移动指令(装入,存储,复制指令)和控制指令(条件和非条件转移,子程序调用和返回指令)。其中每条指令所需的时间都为常量。
1.1. 插入算法
插入算法的核心是循环不变式。
循环不变式的三个性质:
Ø 初始化;它在循环的第一轮迭代开始之前,应该是正确的。
Ø 保持:如果在循环的某一次迭代开始之前它是正确的,那么,在下一次迭代开始前,它也应该保持正确。
Ø 终止:当循环结束时,不变式给了我们一个有用的性质,它有助于表明算法是正确的。
首先假定第一个元素有序,那么第二个元素为KEY值,不论是从小到大,还是从大到小。
都是从有序序列的最后一个开始比较,逐个向前跟KEY值比较。
算法实现:
void Insert_sort( int *a)
{
for( int j = 1;j<=length(a);j++)
{
int key = a[j];
int i = j-1;
while( i>= 0 && a[i] > key) //有序元素的最后一个元素开始
{
a[i+1] = a[i];
i= i -1;
}
A[i+1] = key; //每插入一个元素保持有序
}
}
时间复杂度:理论值是::O(N)~O(N的平方) 实际值:c1n2+c2n+c3
空间复杂度:理论值是:O(1) 实际值:只需一个KEY所占的额外空间。
测试 :随机12000个数
Starttime 1.75s
Endtime 2s
using time0.25s
- 小菜开始学习算法(返璞归真->程序=数据结构+算法)
- 小菜一步一步学数据结构之(二)算法和算法分析
- 算法 + 数据结构 = 程序
- 算法+数据结构=程序
- 程序=数据结构+算法
- 程序=算法+数据结构
- 程序=算法+数据结构
- 数据结构 + 算法 = 程序
- 程序=数据结构+算法
- 程序=数据结构+算法
- 【数据结构与算法】数据结构+算法=程序
- 数据结构学习笔记-从头开始理解KMP算法(2)
- 学习数据结构与算法(张铭)的开始
- 新手学习数据结构与算法---开始篇
- 数据结构和算法学习开始啦
- 从头开始学习算法和数据结构
- 数据结构及算法 1-开始学习!
- 由《数据结构与算法分析-C语言描述》开始的数据结构与算法学习之旅
- 正则表达式在文本工具中的应用
- Java学习之InputStream中read()与read(byte[] b)
- misc creature 改变世界的24个发明
- 两数组包含问题
- class_create()
- 小菜开始学习算法(返璞归真->程序=数据结构+算法)
- Android屏幕适配不同的资源图片和布局
- hdu-1049 Climbing Worm
- misc life 未来的购物方式
- 提高生活、学习、工作效率的方法——时间管理Vs个人管理
- JavaScript笔记之操作Cookie
- C++中头文件(.h)和源文件(.cpp)都应该写些什么
- 解决Ubuntu中打开Windows下的文本文档乱码问题
- java字符串编码及转换