【1.3】算法的特性及分类
问题 —— 算法 —— 程序
一、基本概念
目标:问题求解
- 问题(problem)一个函数
- 从输入到输出的一种映射
- 算法(algorithm)一种方法
- 对特定问题求解过程的描述,是指令的有限序列
- 程序(program)
- 是算法在计算机程序设计语言中的实现
算法的特性
- 通用性
- 对参数化输入进行问题求解
- 保证计算结果的正确性
- 有效性
- 算法是有限条指令组成的指令序列
- 即由一系列具体步骤组成
- 确定性
- 算法描述中的下一步应执行的步骤必须明确
- 有穷性
- 算法的执行必须在有限步内结束
- 换句话说,算法不能含有死循环
皇后问题(四皇后)
二、基本算法分类
- 穷举法
- 顺序找K值
- 回溯、搜索
- 八皇后、树和图遍历
- 递归分治
- 二分找 K 值、快速排序、归并排序
- 贪心法
- Huffman 编码树、最短路 Dijkstra 算法、最小生成树 Prim 算法
- 动态规划
- 最短路 Floyd 算法
二分法找 k 值
于已排序顺序线性表
- 数组中间位置的元素值 kmid
- 如果 kmid = k,那么检索工作就完成了
- 当 kmid > k 时,检索继续在前半部分进行
- 相反地,若 kmid < k,就可以忽略 mid 以前的 那部分,检索继续在后半部分进行
- 快速
- kmid = k 结束
- Kmid ≠ k 起码缩小了一半的检索范围
思考:算法的时空限制
设计一个算法,将数组 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
参考资料
北京大学 《数据结构与算法》 张铭、赵海燕、宋国杰、黄骏、邹磊、陈斌、王腾蛟
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn