算法复习 - 蛮力法
一.定义
蛮力法是一种简单直接解决问题的方法,常常直接基于问题的描述和所涉及的概念定义。
二.蛮力法的用处
a.和其他策略不同,我们可以用它解决广阔领域的各种问题,实际上,它可能是唯一一种什么问题都能解决的一般性方法。
b.对于一些重要的问题(例如 排序,查找,矩阵乘法和字符串匹配)来说,蛮力法可以可以产生一些合理的算法
c.如果要解决的问题实例不多,而且蛮力法可以用一种能够接受的速度对实例求解,那么设计一个更高效率的算法是不值得的
d.即使效率很低,仍然可以用蛮力算法解决一些小规模的问题实例。
f.蛮力算法可以为研究或教学目的服务,例如,可以以之为准绳 ,来衡量同样问题的更高效算法。
三.问题实例
1.选择排序
选择排序最开始的时候,扫描整个列表,将最小的元素与第一个元素进行交换。然后从第二个元素开始扫描列表,找到n - 1个元素中最小元素和第二个元素交换。直到第n - 1遍。
int min;for(int i = 0;i <= n - 2;i ++){min = i;for(j = i + 1;j <= n - 1;j ++){if(A[min] > A[j])min = j; //升序排列,降序改为 < 即可swap(A[min],A[j]);}}
2.冒泡排序
它比较表中的相邻元素,如果是逆序的话,就交换他们的位置。重复多次以后,最大的元素就会沉到列表的最后一个位置。第二遍操作,第二大的元素沉下去,这样进行n - 1遍操作,该列表就排好序了。
for(int i = 0;i <= n - 2;i ++)for(int j = 0;j <= n - 1;j ++){if(A[j] > A[j + 1])swap[A[j + 1],A[j]);}
3.字符串匹配问题
它的想法很简单,就是从主串的第一个元素开始与模串的所有元素进行匹配,如果匹配失败,那么就返回主串的第二个元素,直到遍历完所有主串的元素。
这个算法叫做BF。
# include<iostream>
using namespace std;string BF(string s1,string s2)
{int i,j;i=j=0; string ss = "error";while(s1[i]!='\0'&&s2[j]!='\0'){if(s1[i]==s2[j]){i++;j++;}else {i=i-j+1;j=0;}}if(s2[j]=='\0')return s1;else return ss;
}main()
{string s1="abcdef";string s2="dfa";string s;s = BF(s1,s2);cout<<s;
}
4.还有比较经典的旅行商问题和分配问题,分配问题在分支限界法中会详细讲解,这里不多做赘述、这两个问题在空间,时间允许的情况下皆可通过穷举查找的办法解决。
算法复习 - 蛮力法相关推荐
- 蛮力法(python)
文章目录 蛮力法 一.别名 二.基本思想 1.引入库 2.特点 总结 下一篇 蛮力法 作为算法入门级别的算法,蛮力法,掌握好蛮力法,并对之有兴趣,可激发对算法的乐趣 一.别名 蛮力法也叫暴力法,穷举法 ...
- 算法设计与分析复习第一二章(时间复杂度和蛮力法)
算法复习一二章 第一章时间复杂度 第二章蛮力法 (1)查找问题 顺序查找 (2)排序问题 选择排序 起泡排序 (3)组合问题 0-1bag问题概述(略) (4)图问题 哈密顿回路 TSP问题 (5)几 ...
- 生成排列 --- 蛮力法,Johnson-Trotter算法
生成排列 --- 蛮力法,Johnson-Trotter算法 蛮力法 Johnson-Trotter算法 蛮力法 思路: 通过递归遍历所有的排列方式. 代码演示: #include <iostr ...
- 【算法设计zxd】第四章蛮力法 1.枚举法 02穷举查找
目录 蛮力法(brute force): [例4-1]链环数字对 问题分析 计算模型 pair_digital(int n): 代码: [例4-2]解数字迷: 思考题:ACM预测: 问题分析 ...
- 算法分析学习笔记二 蛮力法
算法设计与分析之二 蛮力法 目录 1.蛮力法的设计思想 2.蛮力法优点 3. 冒泡排序分析 4. 选择排序分析 5. 蛮力法中冒泡排序与选择排序的时间空间复杂度分析 6. 蛮力法C语言实现 7. 算法 ...
- 算法设计与分析------蛮力法
算法设计与分析------蛮力法(c语言) 一.蛮力法(穷举法 枚举法) 1.定义 2.蛮力法使用情况 3.蛮力法的优点 4.蛮力法的缺点 5.采用蛮力法设计算法的2类: 6.简单选择排序和冒泡排序 ...
- 算法设计与分析之蛮力法
文章目录 前言 一.蛮力法设计思想 二.对蛮力法的思考 三.蛮力法的优缺点 四.使用蛮力法的几种情况 五.蛮力法设计步骤 六.蛮力法示例 总结 前言 大家好,我是一只勤勤恳恳的程序猿.本篇文章小猿将跟 ...
- 算法设计与分析:蛮力法
算法分析与设计实验报告 第 四 次实验 姓名 裴朵朵 学号 5001170016 班级 计科一班 时间 2019.10.31 地点 实验名称 暴力法的使用 实验目的 1.理解暴力法的工作原理.过程技巧 ...
- 算法设计与分析—蛮力法
蛮力法 蛮力法概述 蛮力法也称穷举法(枚举法)或暴力法,是一种简单的直接解决问题的方法,通常根据问题的描述和所涉及的概念定义,对问题所有可能的状态(结果)一一进行测试,直到找到解或将全部可能的状态都测 ...
最新文章
- CSR稀疏矩阵存储方式
- 监控平台zabbix高级配置
- NanoPi NEO Air使用十:自己编写驱动来控制LED
- (二)文档请求不同源之window.name跨域
- 50个Android开发人员必备UI效果源码[转载]
- 【hdu1241Oil Deposits】【HDU 2612 Find a way】
- Flowable最新版(6.4) 新特性
- JVM----类的加载机制
- 召回离线评估指标(一)
- 硬盘分区表知识—详解硬盘MBR
- 有关计算机组成原理知识的论文,计算机组成原理课程相关论文
- 扩展欧几里得算法(Python)
- 新路由3详细刷机教程
- for循环、break和continue、循环的嵌套、white和do-white循环
- python枚举详解
- 大神级DIY作品:运动跟随大眼睛,软件硬件结构一个都不能少
- ASO | APP推广之ASO优化中的九大奥义。
- Leaflet加载百度地图
- 一种ESP8266使用MQTT连接阿里云和云Web方法
- study mysql
热门文章
- 计算机组装维修考点,计算机维修工(基础知识)—教材
- Webrtc 多人视频会议系统 服务器 Licode 介绍
- Github即将破百万的PDF:编写高质量代码改善JAVA程序的151个建议
- 产品vr全景摄影拍摄公司提升客户的体验感与满意度
- linux需要看门狗喂狗程序,多任务看门狗, 喂狗方法
- 去雾综述_偏振光学成像去雾技术综述
- 计算机与信息科学书刊,第五届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2020)...
- Unity自动驾驶仿真
- 2023王道数据结构考研习题汇总
- 关于SVN 操作 提示文件已过时,请先update