算法的特性及分类
1.3 算法
问题 - 算法 - 程序
目标:问题求解
- 问题(problem)一个函数
- 从输入到输出的一种映射
- 算法(algorithm)一种方法
- 对特点问题求解过程的描述,是指令的有限序列
- 程序(program)
- 是算法在计算机程序设计语言中的实现
算法的特性
- 通用性
- 对参数化输入进行问题求解
- 保证计算结果的正确性
- 有效性
- 算法是有限条指令组成的指令序列 (有意义)
- 即由一系列具体步骤组成
- 确定性
- 算法描述中的下一步应执行的步骤必须明确
- 有穷性
- 算法的执行必须在有限步内结束
- 换句话说,算法不能含有死循环
皇后问题(四皇后)
- 解<x1,x2,x3,x4>(放置列号)
- 搜索空间:4叉树(排列树)
回溯算法
基本算法分类
- 穷举法
- 顺序找K值
- 回溯(能进则进,不能进就换,不能换则退)、搜索
- 八皇后、树和图遍历
- 递归分治
- 二分找K值、快速排序、归并排序
- 贪心法(每次求最佳)
- Huffman编码树、最短路Dijkstra算法,最小生成树Prim算法
- 动态规划
- 最短路Floyd算法
思考:算法的时空限制
设计一个算法,将数组A(0..n-1)中的元素循环右移K位,假设原数组序列为a0,a1,...,an-2,an-1;移动后的序列为an-k,an-k+1,...,a0,a1,...,an-k-1。要求只用一个元素大小的附加存储,元素移动或交换次数与n线性相关。例如,n=10,k=3
原始数组:0 1 2 3 4 5 6 7 8 9
右移后的:7 8 9 0 1 2 3 4 5 6
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/15995035.html